Oldskooler Ramblings

the unlikely child born of the home computer wars

Archive for the ‘Vintage Computing’ Category

PC Speaker Music Article

Posted by Trixter on October 30, 2011

Just a quick note that an article I helped research and contribute to, “PC Speaker Music: An Introduction“, is now online over at Shiru’s 1-bit Music News blog.  The article covers many different ways to coax something more out of the PC speaker than a simple beep, with a focus on music creation.  The article does not go into deep technical depth, but it provides a lot of program links, screenshots, and music samples.

You may want to poke around 1-bit Music News for some previous entries; the entire blog is dedicated to creating polyphonic music with only a single speaker interface and no hardware other than the ability to pulse the speaker on and off at various intervals.  This leads to, no surprise, a lot of pulse waveforms.  The predominant platform for exploring this is the ZX Spectrum, where the technique was made popular through some of the amazing compositions of Tim Follin.  Some of the music can be slightly harsh and/or an acquired taste, but others are respectful of the platform and composed specifically for it.  Just remember to turn down your speakers before listening to an example.

Posted in Vintage Computing | Leave a Comment »

No keyboard, no monitor, no problem

Posted by Trixter on September 29, 2011

I have a friend named Andrew Jenner.  If you’re intimately familiar with PC retrocomputing, you may remember him as the person who thought it would be a good idea to remaster an old game called Digger so that it could be recompiled for modern machines/languages/operating systems.  Meaning:  He took the original game binary, used DEBUG.COM to dump sections of it out as partially-assembled assembler source, and examined and tweaked it over several months until it could compile back into the original.  Then he translated that into C.  Then he made the C portable.  Then he made the C portable across operating systems.  Then he switched out the graphics for higher-resolution ones.  The end result is that you can now play this ancient game perfectly on any operating system, even in a Java VM.  His actions inspired similar projects by other people, like The Jumpman Project and The Beyond Castle Wolfenstein Project.  So that’s what Andrew does for fun.  At least, that’s one of the things he does for fun, when he’s not building new electronic music toys for his children, or writing a cycle-exact 8088 emulator, or just generally visiting every single hackerspace in a 200-mile radius to kick down the door and show them who’s boss.

He wrote me recently to let me know he had purchased an XT to do some democoding on it, a shared passion of ours.  It came with a monochrome card, but he lacked a suitable monitor; it also lacked a keyboard, and a working disk drive.  Did that stop him from using it?  Hell no, this is Andrew Fucking Jenner!  Step aside, son:

I ordered a CGA card but decided to see if I could jerry-rig something up in the meantime. I programmed my Arduino to pretend to be an XT keyboard and also the “manufacturing test device” that IBM used in their factories to load code onto the machine during early stage POST (it works by returning 65H instead of AAH in response to a keyboard reset). I then used this to reprogram the CRTC of the MDA to CGA frequencies (113 characters of 9 pixels at 16MHz pixel clock for 18 rows (14 displayed) of 14-scanline characters plus an extra 10 scanlines for a total of 262 scanlines). The sources for this are on github.

I had to re-read that a few times to make sure I wasn’t having a seizure.  Let’s confirm what happened:

  1. With no input device or working disk drive, he still managed to load code by reprogramming a microcontroller to emulate a long-forgotten IBM diagnostic protocol, formerly used only in factories by test devices to QA units before they went out the door.
  2. The code he loaded was to force a monochrome card to output NTSC signals, so that could be connected to a TV.  Not dramatic enough for you?  How about this:  He forced a monochrome card to behave like a color card.
  3. He made the schematic and source code available, because that’s the kind of guy he is.

You don’t mess with Jenner.  You do read his blog, however.

Posted in Programming, Vintage Computing | 3 Comments »

The PC Mockingboard

Posted by Trixter on September 9, 2011

(20230809 update:  After interviewing Glen Clancy and performing other research, it has come to my attention that, while the card bundled with Bank Street Music Writer was a Mockingboard clone for the PC, it was not an officially-sanctioned board created by Sweet Micro Systems.  It was cloned and modified for the ISA bus by a third party specifically to be bundled with the software.  I’m currently making a video about the whole ordeal, so subscribe to www.youtube.com/theoldskoolpc to make sure you catch it when it comes out.)

I am a lucky owner of the IBM PC version of Bank Street Music Writer, which I purchased in 1986 using $85 of saved allowance through a friend’s older brother who worked at Babbage’s and could get it at a discount (normal cost was $150).  The Ad Lib Computer Music System wasn’t available yet, and for $245 I couldn’t have afforded it anyway.  $150 was a lot for a consumer-oriented music composition program, and with good reason:  It came with a sound board.  For the owner of a PC jealous of nearly every other home computer that came with decent sound hardware built in, this was the holy grail in a software box to me.

The software and packaging called it the Bank Street Music Writer card, and it was capable of six synthesized voices with different instrument types, some of which could be percussive.  If that sounds a lot like the Ad Lib, don’t be fooled — the output was square waves, the volume envelopes were controlled by the software, and the percussive sounds were made by mixing white noise with a waveform.  It sounded a lot like two PCjrs glued together.   Apple users are familiar with this sound:  It’s the Mockingboard.  The PC board doesn’t say anything like that on its PCB, and the components aren’t arranged the same way as they are on a real Mockingboard, but it sure sounded awfully similar.  So much so, in fact, that I pulled my card out of storage a few years ago to see if I could decipher it for adding support for it in MONOTONE.  I discovered it was built around a GI AY-3-8913, which itself is a smaller pincount version of the AY-3-8910, which was, in fact, the main chip on a Mockingboard.  But that was the only connection, and it was mostly conjecture on my part.

Until tonight.  I was browsing through The Internet Archives’ collection of Family Computing Magazines (thank you, Mr. Scott) when this caught my eye:

Well look at that — it is a PC version of the Mockingboard!  So at some point there was going to be a PC Mockingboard, but the only fabrication of it was as the “Bank Street Music Writer Card” bundled with Bank Street Music Writer.  You don’t see this written in any Mockingboard/Apple history, which is a shame because I’d be curious to know what the plans were and how far they got off the ground.  All we have proof of, thanks to Family Computing, is that they were planning to market it as a Mockingboard at some point.

This is easily the rarest sound card I have in my collection, and is probably the most rare and valuable PC sound card second only to the Innovation SSI 2001 music card, of which only two are known to still exist.  (Only one BSMW card is known to exist — mine — but remember the first lesson of the collector:  Rarity != value.)  And the Innovation has its own trump card:  It’s a PC version of the SID.

Scans of this card, reference samples of its output, and my interview with Glen Clancy about Bank Street Music Writer and it’s music file format will probably be inaugural entries in my Sound Card Museum project, which I will start building before the year is over.  If you can’t wait and want to hear what it sounds like right now, you can check out both a sample file that came with BSMW, or a piece of music I transcribed myself (a section of “Consider Yourself” from Oliver).

(PROTIP: Bank Street Music Writer also supports the PCjr and Tandy 1000 sound chip in a limited capacity, so you can snag BSMW from your favorite abandonware watering hole to play with it in DOSBOX.  It requires ANSI.SYS, so hopefully that won’t be a problem in DOSBOX.  If you’re especially lucky, it will come bundled with the songdisk I released with it so you can play with 20+ extra tunes.)

Posted in Software Piracy, Vintage Computing | 6 Comments »

Happy Birthday to the IBM PC (and MTV)

Posted by Trixter on August 12, 2011

Today, the IBM PC celebrates it’s 30th birthday.  11 days earlier, MTV did the same.  Both of those events changed the world and shaped my life, so I had a little fun with my own IBM PC to commemorate the event, which I call MTV Corruption:

Posted in Demoscene, Technology, Vintage Computing | 3 Comments »

At a disadvantage

Posted by Trixter on June 4, 2011

Quick, without doing any research: What early 1980s computer was faster, the IBM PC or the Commodore 64? The IBM PC ran an 8088 at nearly 5MHz, whereas the C64 ran a 6502 variant at 1MHz. The PC cost thousands of dollars, the C64 hundreds. The PC had a 1 megabyte address space; the C64 only 64K. Is this a trick question?

It is!  The C64 was faster.  The original IBM PC, despite appearances and bias on the part of both consumers and marketing, was actually the slowest popular personal computer on the market at the time of its release, even compared to the Apple II and Atari 400.  Here’s why.

The 8088 holds an uncomfortable position between the realm of 8-bit and 16-bit personal computing; while the internal word size was indeed 16-bit, the 8 in 8088 means that its external data bus was only 8 bits wide.  This means that the 8088 could only access one byte of data in a single bus operation, giving it speeds much more like an 8-bit personal computer than a 16-bit one. Normally this is no big deal; the 6502 used in the C64 had the same limitation.  But unlike the 6502, which could access a byte in a single cycle, the 8088 took 4 cycles to access that same byte.  Another way of looking at this: every time memory is touched, the 8088 wastes 75% of its cycles, effectively turning the IBM PC from a 4.77MHz computer into a 1.1925MHz computer.  This gave it a “lead” of only 0.1695 MHz over the C64.

If it still had a slight lead, then why was it slower?  While the 8088 could indeed operate on 16 bits at a time, the machine instructions were between 2-4 bytes large, and only the simplest instructions took 2 cycles to execute.  Contrast that with the 6502, where most instructions are 1 byte large and most execute in 1 cycle.

Let’s illustrate this with a fun example:  Rotating a byte of memory once using ROR (rotate right). We’ll keep it fair by treating the PC like it only has a single 64K segment of memory. First, the 6502 version using ROR:

Cycle Operation
1 fetch opcode, increment program counter
2 fetch low byte of address, increment program counter
3 fetch high byte of address, increment program counter
4 read from effective address
5 write value back and do operation
6 write the new value to the effective address

6 cycles. Now the 8088 version:

Cycle Operation
1 ROR BYTE PTR [1234],1 expands to “D0 0E 34 12” so let’s get to fetching the opcode:
2 (still fetching…)
3 (still fetching…)
4 (still fetching…)
5 (still fetching…)
6 (still fetching…)
7 (still fetching…)
8 (still fetching…)
9 Fetch lowbyte of address
10 (still fetching…)
11 (still fetching…)
12 (still fetching…)
13 Fetch hibyte of address)
14 (still fetching…)
15 (still fetching…)
16 (still fetching…)
17 Perform operation, which takes 15 cycles + EA calculation (6)
37 Final cycle of calculation, we’re done, yay :-/

What took 6 cycles on the C64 takes 37 cycles on the IBM PC, no thanks to the slow memory access of 4 cycles per byte. Taking both machine’s clock speeds into account, this means the operation takes about 6 microseconds on the C64 and about 8 microseconds on the IBM PC.  It can get much worse than that, especially if you’re foolish enough to access more than a single 64K memory segment.  IBM PC is teh suck! (*)

The gap between the IBM PC and the Atari 400 is even wider, if you can believe that, because the Atari 400 ran the 6502 faster (1.78MHz) than the C64 (1.026 MHz).  The BBC Micro?  2MHz!  It’s painful to think about!

Ever wonder why there hasn’t been a true demoscene demo on the original IBM PC aside from three scrollers (all Sorcerers releases, btw)? Well, now you know one major reason. (Lack of decent graphics is another; in fact, I’d be willing to argue that only the Apple II had slower graphics.)

(*)Yes, I know the 8088 has 4-byte prefetch queue that sometimes speeds things up.  That comes in handy, oh, almost never.

Posted in Demoscene, Programming, Uncategorized, Vintage Computing | 43 Comments »

When you reach the top, keep climbing

Posted by Trixter on March 15, 2011

(Rather than break up the discussion, I’ve edited this entry with the promised timing information at the end of the post.)

First off, you owe it to yourself to check out Paku Paku, the astonishingly great pac-man clone written by Jason Knight.  Why astonishingly great?  Because, as a hobbyist retrogaming project, it does everything right:

  • Uses a 160×100 16-color tweakmode on CGA, PCjr/Tandy, EGA, VGA, and MCGA, despite only VGA being capable of a truly native 160×100 resolution
  • Plays multi-voice sound and music through the PC speaker, Tandy/PCjr 3-voice chip, Gameblaster CMS, and Adlib (yes, CMS support!)
  • Runs on any machine, even a slow stock 128K PCjr
  • Has convincing game mechanics (ghosts have personalities, etc.)
  • Comes will full Pascal+ASM source code

This is just as good a job, if not better, than I like to do with my retroprogramming stunts.  Very impressive work!

One of the things I love about coding for the 8088/8086 is that all timings and behavior are known. Like other old platforms like the C64, Apple II, ZX Spectrum, etc. (or embedded platforms), it truly is possible to write the “best” code for a particular situation — no unpredictable caches or unknown architectures screwing up your optimization. Whenever I see a bit of 808x assembly that I like, I try to see if it can be reworked to be “best”.  I downloaded Paku Paku just as much for the opportunity to read the source code as for the opportunity to play the game (which I did play, on my trusty IBM 5160).

On Mike Brutman’s PCjr programming forum, a discussion of optimizing for the 8088 broke out, with Jason giving his masked sprite routine inner loop as an example of how to do things fast:

lodsw
mov  bx,ax
mov  ax,es:[di]
and  al,bh
or   al,bl
stosw

It takes advantage of his sprite/mask format by loading a byte of sprite data and a byte of the sprite mask with a single instruction, then it loads the existing screen byte, AND’s the sprite mask out of the background, OR’s the sprite data into the background, then writes the background data.  It takes advantage of many 808x architecture quirks, such as the magic 1-byte LODS and STOS instructions (which read a word into/write a word out of AX and then auto-increment the SI or DI registers, setting up for the next load/store) , and the 808x’s affinity for the accumulator (AX, for which many operations are faster than for other registers).  In the larger function, it’s unrolled, specialized for the size of the sprite.  It’s pretty tight code.

However, one line (“MOV BX,AX”) bugged me, as it also bugged the author:

The sprite data format is stored as byteMask:byteData words which I point to with DS:SI for LODSW… which I then move to BX (which sucks, but is still faster than MOV reg16,mem; add SI,2) so I can use bh as the mask and bl as the data.

So, was that code “best”?  Is there no faster way to write a masked sprite in 160×100 tweaked text mode on the 8088?

First, let’s look at his original code, with timings and size:

lodsw            16c 1b
mov  bx,ax       2c  2b
mov  ax,es:[di]  10c 3b
and  al,bh       3c  2b
or   al,bl       3c  2b
stosw            15c 1b
--------------------------
subtotal:        49c 11b
total cycles (4c per byte): 93 cycles

On 8088, reading a byte of memory takes 4 cycles, whether it’s “MOV AX,mem” or the MOV instruction opcode itself. That’s why smaller slower code can sometimes win over larger faster code on 808x. So it’s important to take the size of the code into account when optimizing for speed.

Some background knowledge of how Paku Paku works can help us:  The game does all drawing to an off-screen buffer that mirrors the video buffer, and when the screen needs to be updated, only the changed memory is copied to the video buffer.  Because Jason does all drawing to an off-screen buffer in system RAM, and the video buffer is smaller than the size of a segment, you have room left over in that segment to store other stuff. So if you store your sprite data in that same segment after where the video buffer ends, you can get DS to point to both screen buffer AND sprite data. Doing that lets us point BX to the offset where the sprite is (it was originally meant to be an index register after all), and use the unused DX register to hold the sprite/mask. We can then rewrite the unrolled inner loop to this:

mov  dx,[bx]     8+5=13c 2b ;load sprite data/mask
lodsw            16c     1b ;load existing screen pixels
and  al,dh       3c      2b ;mask out sprite
or   al,dl       3c      2b ;or sprite data
stosw            15c     1b ;store modified screen pixels
inc  bx          3c      2b ;move to next sprite data grouping
--------------------------
subtotal:        53c     10b
total cycles (4c per byte): 93 cycles

Although we saved a byte, it’s a wash — exactly the same number of cycles in practice.  However, since he is already unrolling the sprite loop for extra speed, we can change INC BX to just some fixed offset in the loop every time we need to read more sprite data, like this:

mov dx,[bx+1]
(next iteration)
mov dx,[bx+2]
(next iteration)
mov dx,[bx+3]

By adding a fixed offset, we can get rid of the INC BX:

mov  dx,[bx+NUM] 12+9=21c 3b ; "NUM" being the iteration in the loop at this point
lodsw            16c      1b
and  al,dh       3c       2b
or   al,dl       3c       2b
stosw            15c      1b
----------------------------
subtotal:        58c      9b
total cycles (4c per byte): 94 cycles

We shaved two bytes off of the original, but we’re one cycle longer than the original.  While the smaller code is most likely faster because of the 8088’s 4-byte prefetch queue, it’s frustrating from a purely theoretical standpoint.

Reverse-engineer extraordinaire Andrew Jenner thinks two steps ahead of me and provides the final optimization that not only gets the cycle count down, but frees up two registers (DX and SI) in the process.  He writes only what is necessary, and since we need to skip over every other byte when writing in 160×100 mode, manually updates the DI index register to do so.  The end result is obtuse to look at, but undeniably the fastest:

mov ax,[bx+NUM]  12+9=21c 3b ; “NUM” being the iteration in the loop at this point
and al,[di]      9+5=14c  2b
or al,ah         3c       2b
stosb            11c      1b
inc di           3c       1b
----------------------------
subtotal:        52c      9b
total cycles (4c per byte): 88 cycles

…successfully squeezing blood from a stone.

Is this truly “best”?  I think so.  But to prove it, we have to time the code running on the real hardware.  Thanks to Abrash’s Zen Timer, we have the following results:

  • Jason’s original code as listed above, repeated three times to plot a 5×5 sprite:  48 microseconds
  • My code block, three times with [bx], [bx+1], [bx+2]: 41 microseconds
  • Andrew’s optimization, also written with [bx], [bx+1], [bx+2]: 37 microseconds

And just to make your head spin, check the comments for this entry — the resulting discussion shows that if you’re willing to rearrange both your sprite data and your thinking, you can get things even faster!

Posted in Gaming, Programming, Vintage Computing | 24 Comments »

Dopplegangers!

Posted by Trixter on February 13, 2011

I have free time to work on a single project at a time, and that project this weekend has been MindCandy.  (We’re very close to a test disc (yay!) — minus subtitles.  Subtitling 4 hours of multi-speaker dialog is a massive chore, multiplied by the number of languages you want to have, so we’re strongly considering not doing subtitles.)  But if I had time to work on multiple projects simultaneously?  I’ve always wanted to produce videos about classic hardware and games, 99% centered on the PC/DOS platforms of the 1980s.  Imagine how happy I am to have discovered the following people:

Lazy Game Reviews – Produces 10-minute reviews on both hardware and games, with a touch of humor and lots of footage captured from the real hardware whenever possible.  The Carmageddon review in particular is perfection, having been captured from a real 3Dfx card and with meaningful illustrations of gameplay, including some accurate history of the development of the game.  His Youtube channel is easier to navigate past shows, but the blip.tv channel earns him a modicum of cash and has better quality video, so… choose.

Ancient DOS Games – While LGR covers the gamut of classic personal computers and gaming, Ancient DOS Games covers only DOS games, and the thoroughness and attention to detail is astounding.  Features like tips and tricks on how to play the game, recommending the best graphics mode or DOSBOX settings per game, noticing what the framerate of the game is and how it affects gameplay, and even a comparison of dithering methods in Thexder and whether or not they were effective — these are all OCD traits that I would have put into my own coverage of the material.  His fly-outs are pixel-art amusing.

Those guys are doing such an amazing job that I really don’t see the need for me to do so.  The both of them combined equals a quality of work that I can’t see myself improving upon, which not only makes me very happy, but frees me up to work on other projects.  Check them out, dammit!

PS: I found I have a true doppleganger over on tumblr.  We have very much in common — moreso were I lesbian.

Posted in Digital Video, Entertainment, Gaming, MindCandy, Vintage Computing | 3 Comments »

An attempt at podcasting

Posted by Trixter on February 11, 2011

If you’d like to hear what I sound like imitating a podcaster, head on over to Hacker Public Radio to listen to an argument against emulators.  This was lightly scripted and lightly edited, and while I don’t think it turned out very well, I’ve received some nice comments on it, so maybe you’ll like it too.

I have an idea for a regular podcast I would indeed like to do, but not until MindCandy is finished and maybe one or two other projects as well.  The idea would center around vintage IBM PC and DOS-era computing as a hobby, of course.

Posted in Vintage Computing | 2 Comments »

Vintage Computer Festival Midwest 5.0 Pix

Posted by Trixter on September 19, 2010

I’ve had very little time to play with old machinery this year, but I did manage to visit the VCF Midwest 5.0 this year.  It was hard to avoid, being as it was held about 25 minutes from my house.

Seeing as this was combined with the yearly local Commodore 64 fest, it was a bit of a double-fest. Jim Brain was there, and I also had a nice conversation with Nate Lawson who educated me on the finer points of how BD+ does and does not work. MC3 will intentionally use as little protection as possible, but the 16-yr-old cracker in me still likes hearing about the details.

I couldn’t arrive until 9pm, but most of the exhibits were still up.  I took pictures with my 9-yr-old 4MP “prosumer” camera, and was mildly happy with how they turned out.  Enjoy:

Vintage Computer Festival Midwest 5.0

Posted in Vintage Computing | 6 Comments »

My So-Called Series

Posted by Trixter on August 12, 2010

I’d like to take a short break in my audio-cassettes-included-with-classic-computer-games series to ask a question:  What series have you tried to collect, and why?

Most collectors of classic game software tend to focus on an entire company (Sierra, Infocom, Adventure International, etc.) while others tend to hone in on a particular series (Wizardry, Ultima, etc.)  I am guilty of both, but my collection is biased towards series that may not seem to be worth collecting, have any relationship to each other, or have any rational pattern (even to fellow collectors!).  What I collect reflects why I like old PCs as a hobby:  Not because “old komputers R k00l” but because “what people did to get past old computers’ limits is k00l”.  If a game was really well-programmed, or had great graphics, or managed to produce audible sound out of the beeper, it gained my admiration.  Sure, story and gameplay mechanics are a contributing factor, but they’re not the main focus of my collection.

Another odd thing about what I collect:  It’s 99% PC.  I have some Apple II, Mac, and C64 titles, but those have been donations I’ve promised to take good care of, and I have.  My heart lies in the original PC, mostly because it was the hardest platform to get a decent game experience on, making successes all the more impressive.  This is atypical; most of my fellow collectors don’t discriminate platforms like I do.

Here’s an incomplete list of some “series” I’ve collected and why I consider them a series:

All the PC versions of Cinemaware adventure titles: Defender of the Crown (including the euro bootable EGA/Tandy/3-voice version), King of Chicago, S.D.I., Sinbad, The Three Stooges, It Came From The Desert, Rocket Ranger. Cinemaware games were a mixed bag:  Awesome graphics, music, and sound — on Amiga.  Other platforms usually got worse graphics and sound, but better gameplay because they would tweak some games between platforms.  Play the original Defender of the Crown for Amiga and you’ll find it is nearly impossible to win.  Play it on C64 or PC, and you’ll find it’s a much more balanced game.  Anyway, the graphics rocked CGA at the time.

EA Chuck Yeager flightsim series:  Chuck Yeager’s Flight Simulator, Chuck Yeager’s Flight Trainer 2.0, Chuck Yeager’s Air Combat. The first was a very fast simulator for an old PC with CGA; you could even flyby the “EOA” logo in the desert.  Then Microsoft sued over the “flight simulator” name and they quickly rebranded it as Flight Trainer.  Then came Flight Trainer 2.0 with more of a focus on training, and an audio cassette with many notes from Chuck himself.  Finally Air Combat, with a completely new engine by Brent Iverson which traded 20% less speed for 100% better graphics, models, video modes, clouds, cameras…

Deus Ex series: Deus Ex, Deus ex 2: Invisible War, Project: Snowblind. Snowblind?  Yes, Project: Snowblind was originally developed by Crystal Dynamics as a spin-off of Invisible War, but when DE2:IW sold poorly, the story and assets were changed somewhat to distance the game from a then-failing property.  Playing the game, however, reveals much of the familiar Deus Ex biomod mechanics, and the story — while taking a backseat to action — smells heavily of conspiracies, like all Deus Ex games.

Sierra Game Arts collection:  Thexder, Silpheed, Firehawk, Sorcerian, Zeliard.  All of these games were ports from the PC-88, and all of them look best in their native 640×200 16-color mode which you can see on a Tandy SL/RL/TL series computer or on an EGA card with more than 64K of video RAM.  For everything but Silpheed, the full-screen graphics updated very quickly by dividing the entire screen up into 16×8 tiles (8×8 if a 320×200 mode) and only repainting the tiles that change.  Since movement was quantized to tile locations, very little updated per frame even though it didn’t look like it.  These were essentially 40×25 textmode games but using graphical tiles — brilliant!  (Oh yeah, they also support Tandy 3-voice sound and all but Thexder supported a ton of extra sound devices for the time, but it’s the graphics mode and engine that I love.)

DSI road engine games: Test Drive, Test Drive II, Outrun, Grand Prix Circuit, The Cycles.  This is extremely obscure and deserves an explanation.  When Distinctive Software Inc. was an independent Canadian developer, they came up with a relatively simple-yet-effective road repainting engine that got used in several games published by Accolade:  Test Drive, Test Drive II, Grand Prix Circuit, and The Cycles.  During this time, they also took on a job for Sega porting Outrun to the PC.  They used the same engine, which one could argue they didn’t own because they developed it while under contract from Accolade.  They must have known something was up because they didn’t use their DSI name and logo, but instead used Unlimited Software Inc. Accolade felt they violated a working agreement, and filed a lawsuit.  (Ironically, the Outrun version of the engine is the smoothest, running much better on faster machines.  It’s playable even on gigahertz machines.)

Would you be fooled by this?

DSI:USI:

Access adventure Series:  Mean Streets, Martian Memorandum, Countdown, Amazon: Guardians of Eden, Under a Killing Moon, The Pandora Directive, Overseer. Access knew that the best technology could sell games, even if the story was a bit lacking.  Their engines had (crude) motion video, digitized audio, and 256-color graphics as early as 1989.  Later games like Under a Killing Moon and Pandora Directive also had a great engine with pre-rendered lights and a fully-textured world to explore.  While I loved all of them, my heart belongs to the Mean Streets engine because it used 256-color VGA graphics as the base data but would FS dither to all common lower graphics modes as well.

Here’s part of one shelf of my collection; I have five more shelves:

bookshelf filled with computer games

It’s a small collection compared to some of the superstars of my hobby, and I’ve had to pare it down over the years due to financial hardship, but I’m happy with what I have. It’s special to me, and that’s what counts.

Posted in Gaming, Vintage Computing | 17 Comments »