A small tin toy tank alone on rippled sand dunes at dusk, a last band of light on the dune crests, and on the far horizon a pale band of tall grass floating above the sand like a mirage.

Distinctly Remembered

I was sure the first level of Combat Tanks was grass. Then three witnesses showed up: the disassembly, the options dialog, and my own thirty-year-old screenshots. The scoring of memory versus evidence refused to stay simple.

A dev essay: this one goes deep into code, listings and all.

The first level of Combat Tanks was grass. A green field, with green enemy tanks camouflaged against it, then a sand level, then snow, and around again in that order forever. My friend Randy and I shipped the game in 1994, and for thirty years, whenever it crossed my mind, that fact crossed with it. Grass first. I remembered it the way you remember a childhood phone number: without effort and without doubt.

It was sand.

Two witnesses at the table

Some background, because the way I found out matters more than the finding.

Combat Tanks was a top-down tank battle for Windows 3.1, one of the earliest action games written for Windows at all. The source code was stored on 3.5 inch disks that the external drive I bought refused to read, so it was effectively gone — a story for another essay. So when I decided this summer to resurrect the game for the web, the only authority left was the shipped binary itself. Prior to AI such a task would’ve been unthinkable, but there it was reading disassembly the way you and I read English, and the work settled quickly into a division of labor. The machine supplies what the binary says, and when a gap is encountered I supply the missing details from human memory: what we meant back when we were coding it, how it felt, which of two plausible readings matches the game I actually watched people play.

Two witnesses, in other words. A very old document and a guy who was there.

Most of the time we agreed, and the port grew fast. Then the machine dug into a function that repaints the battlefield between levels and announced that the game had a theme system: every level, the field color and some of the art rotate through three schemes, in a fixed order baked into the code. That part I totally remembered, so far so good. But the machine’s first attempt at naming those schemes came out strange — a white field here, a gray one there, colors I didn’t recognize as anything. So I did what the guy-who-was-there is for. I corrected the record. Grass, then sand, then snow, I said. Green first, the game played seasonally as if battles are taking place over time. I said I was almost certain, and what I felt was certainty with the “almost” filed off.

We built it my way. By that evening the port’s first level was green.

The third witness

A few hours later I went looking for old screenshots of the original, to check some interface details, and found a handful on my old website.

Here is a thing I had forgotten about my own interface: in a one-player game it prints the current level as a plain little numeral in a white box, tucked under the score. Only one of the screenshots was a one-player game. It shows the green field, exactly as I remembered it. The box says 3.

I stared at that 3 for longer than I’d like to admit. The grass was real. It just wasn’t first, and no version of the memory could make room for that. The memory didn’t feel like a guess that had been disconfirmed; it felt like a photograph, and here was an actual photograph, mine, disagreeing with it.

The machine, to its credit, didn’t gloat. It went looking for corroboration instead, and found it somewhere I hadn’t thought to look: inside the executable’s resources, in the Gameplay Options dialog we’d built for two-player games, where you could pick your terrain instead of cycling through all three. The radio buttons sit in the file in their stored order. Sand. Snow. Grass.

So: the arithmetic in the level-painting code, my own screenshots, and a dialog box Randy and I laid out with our own hands, all saying the same thing. Three witnesses, zero dissent, and the eyewitness — the only party in the room who had actually been alive in 1994 — wrong about the game he wrote.

Three screenshots of the original Combat Tanks for Windows in two-player games, side by side. Left, a khaki sand field; middle, a white snow field; right, a green grass field. Each has grey concrete walls, blue ponds and orange mud patches, with a red tank and a blue tank. The original's three terrains: sand, snow, grass.

One apiece

If the story stopped there, it would be a tidy little sermon: trust artifacts, distrust recollection, thank you for coming. And be maybe at least mildly suspect of eyewitness testimony, especially if it’s decades old! But it doesn’t stop there.

Those same screenshots triggered a second dispute, and it went the other way. Indeed, I argue with robots a lot these days, always amicably.

The machine studied the enemy tanks in the images and issued a correction of its own: the enemy army, it declared, was plain — bare, uncolored units, no matter the terrain. It had evidence in hand. It was looking right at the game. And it was wrong, because what it was actually looking at was a few dozen smeared pixels with compression between them and the truth. I looked at the same smears and said no. The enemies are tinted to match the field they fight on. Green army on the grass, tan army on the sand. It was a subtle camouflage effect, and I remembered it specifically because we’d been proud of it — it made the computer’s tanks just slightly harder to spot than yours, and nobody ever noticed on purpose. But I’ll admit my confidence in recollecting game details was a bit shaky, so I needed proof.

The machine went back to the disassembly. There it was: each level’s theme carries a color, and that color is handed to every enemy unit as it spawns. The camouflage was real. Memory had just beaten evidence, held by the same two parties, in the same week, about the same game.

A close-up of the original Combat Tanks grass level, pixels enlarged. Among grey concrete walls on a bright green field sit a dark red tank, the player’s, and two enemy tanks and a helicopter drawn in the same green as the grass. Green army on the grass. The red one is yours.

That’s the part that keeps this from being a sermon. I keep wanting to score the match “memory versus evidence” and the scoring keeps falling apart, because that was never the actual contest. A binary is testimony. A screenshot is testimony. A vivid recollection is testimony. None of them outranks the others by category; what does the work is the reading, and readings fail in ways native to the reader. My memory failed the way memories fail — it kept every element and shuffled the order. The machine failed the way machines fail — it treated a decoded copy as a clean signal and read it with full confidence. Each of us caught the other. Every round was settled the same way: cross-examination, plus a witness neither party controlled.

Why grass

I can even guess why my memory filed grass first, though I want to be honest that this is speculation, and it has no third witness left to check it against.

You saw the grass level only by surviving two others. Sand was where you started and mostly where you died; grass was the level you earned. And in two-player games — which is how the game was best, two kids jammed against one keyboard — grass was the terrain people picked from that options dialog, the default-feeling choice, especially if you grew up in middle Tennessee where spring green is everywhere and overwhelming. So the green field is overrepresented in every memory worth keeping, and my memory didn’t invent anything. It promoted the highlight to the opening act.

That’s a comforting theory, which is exactly why I don’t fully trust it. It’s testimony too. Then, a day after the verdict came in, my memory did something more interesting than losing. It switched sides.

Thinking about the sand level — the one I had just been shown I’d forgotten — I felt a new recollection assemble itself, unbidden and fully formed. Of course sand was first. We built the game in the early nineties, directly downstream of Desert Storm, when the image of a tank meant exactly one thing to every American with a television: desert. Tanks on sand was the era’s default picture of armored combat. Choosing it for level one would barely have been a choice at all. The idea arrived with that same photographic feeling, and it’s genuinely plausible — the period left fingerprints all over the game, right down to the retail box, where the marketing copy promises “smart bombs,” vocabulary the Gulf War had just finished making into household words.

But watch what the witness did there. An hour after losing on the facts, it produced a motive for the winning version — a motive it did not possess while it was testifying, with complete confidence, to grass. I honestly can’t tell whether I retrieved a real reason or manufactured an agreeable one, and there’s no one left to ask. The memory that was wrong felt like a photograph. The explanation that showed up to serve the correction feels like insight. I’m no longer sure I can tell those two feelings apart, and I built the thing they’re both about.

The part that unsettles me

I was wrong about a thing I built. Line by line, over months, with my own hands, tested nightly, sold for money, supported by mail. Custody of a three-item sequence from that project quietly transferred out of my head sometime in the last thirty years, and nothing marked the transfer. No feeling of fading. No asterisk. The memory of grass-first carried the exact same signature of truth as every accurate memory sitting next to it.

I try to hold that gently against all the things I remember distinctly and merely witnessed.

And here is the strangest part, the reason this essay exists: the correction didn’t take. I have now seen the 3 on the green field, the stored order of the radio buttons, the arithmetic in the code. I accept all of it. I’ve rebuilt the game to match it. And the first level of Combat Tanks still feels green. Being proven wrong three ways changed what I’ll say, what I’ll build, what I’d bet — it changed nothing about the feeling. The false memory sits exactly where it always sat, vivid as ever, outranked but not evicted.

Somewhere in my head there is a green field that was never first, and it isn’t going anywhere. The best I can do is remember that it’s there. I already know how well that works.

Combat Tanks ▶ Play it in your browser Original art and sounds. Phones work too.

Becoming Gnarly

Essays on AI, work, and choosing the harder path when it's worth it. New ones by email as they're published.

or grab the RSS feed