FUORI GETTONE

CLASSIC GAMES / FIELD NOTE 001

COVERT ACTIONLeave the alarm alone.

The door is open. That’s when the work starts.

Sid Meier’s Covert Action made me feel like I was infiltrating somewhere. CIA. In the building, looking for something I had no business touching. You can probably draw a line from that to my red-team hobby without hiring a profiler.

MicroProse released it in 1990. Break-ins, intercepted messages, cryptography, electronics. Enough different jobs to keep a case moving and enough ways to screw one up.

A break-in in Covert Action
A break-in in Covert Action. Official Steam gallery / MicroProse, Atari, Nightdive.

The electronics board still gets me. Chips, wires, a signal you have to follow. Swap the wrong chip and the alarm gives your work a review. Contemporary coverage described blank chips on harder settings: now you had to infer what the component did, too.

That’s a lovely piece of design. The screen gives you something to investigate. You make a change. The system answers.

Covert Action’s electronics board
Covert Action’s electronics board. Official Steam gallery / MicroProse, Atari, Nightdive.

Here’s our own tiny circuit exercise in Python. Three terminal states: phone, alarm, tap. Find a route to the tap without reaching the other two. This is a new companion puzzle, not the game’s original code or a reconstruction of its circuitry. Run it with Python 3.

PYTHON 3 / RUN IT LOCALLYDOWNLOAD .PY
from itertools import product

# Our own miniature board, not Covert Action source code.
# Each replacement chip selects one output wire.
chips = {
    "entry": ("phone", "bypass"),
    "bypass": ("alarm", "tap"),
}

def trace(settings):
    reached, pending = set(), ["entry"]
    while pending:
        node = pending.pop()
        if node in reached:
            continue
        reached.add(node)
        if node in settings:
            pending.append(settings[node])
    return reached

solutions = []
for outputs in product(*chips.values()):
    settings = dict(zip(chips, outputs))
    reached = trace(settings)
    if "tap" in reached and not {"phone", "alarm"} & reached:
        solutions.append(settings)

assert len(solutions) == 1
assert "alarm" in trace({"entry": "bypass", "bypass": "alarm"})
assert "phone" in trace({"entry": "phone", "bypass": "tap"})
print(solutions[0])
Our Signal Room companion simulator: phone route, alarm, then a clean tap
Our companion simulator, recorded running. Phone circuit → alarm → clean tap. Play the board.

The companion board runs the same reachability idea in a browser. Replace a chip, trace the signal, see which terminal you reached. The loop above records an actual run of our simulator.

Four configurations. One passes. The assertions also check that the two bad destinations are reachable when you wire them that way. Small enough to inspect before you trust the answer.

Sid Meier and Sierra are where I want to start this series. Different houses, both permanent residents in my head. Covert Action first, because I remember the feeling: get inside, understand what you’re looking at, try to leave before the building learns your name.

Sources and images

Official Steam listing for developer, release year, intelligence and code-breaking features. Barry Brenesal’s June 1991 COMPUTE! review, a contemporary play account, for wiretapping, chip replacement and hidden chip designs. Screenshots from the official Steam store gallery, retained for commentary with attribution to MicroProse / Atari / Nightdive. No endorsement implied.