1985 · Hutchinson Computer Publishing (UK); Bantam Software (US)

The Fourth Protocol

This minisite was contributed by air. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/the-fourth-protocol with me to Gold.

A dying spy's last word stops the computer when you dial it. A London cab takes you to the estate where the bomb is hidden when you say BOMB, and a break-in written into episode one can never happen.

01 · Episode two

Bug: SVETOFOR on the telephone stops the machine

In episode one, Pasternak gasps the word SVETOFOR as he dies. Dial it as a telephone number in episode two and the computer freezes.

The telephone window at Gordon's reading *** CONNECTING ***
SVETOFOR dialled from your office: the screen stays at *** CONNECTING *** for good.

In the emulator, VICE v3.14.0, from your new office. After SVETOFOR the processor had stopped on a $D2 byte at $46C2. That byte is not an instruction, and it halts the Commodore's processor, the 6510, until the machine is reset.

The telephone (telephone, $81B7) asks NUMBER? and looks the answer up as a word of the game's vocabulary, where each word has a number, its token. Five telephone numbers answer, each with a routine in phone_numbers ($8231): Glasgow, Dover, Special Branch, and the harbours of Bristol and Harwich. The game finds the routine from the token less $17. Its check lets through anything below $1C, which is 28 values for five numbers. The 23 words after the numbers in the vocabulary, tokens $1C to $32, each take an address from the bytes past the table's end.

PAPER happens to land on unobtainable and says NUMBER UNOBTAINABLE, which looks deliberate. SVETOFOR lands on $D040, among the video chip's registers, and the processor runs on through bytes that were never code until it hits one that stops it.

02 · Episode two

Secret: A taxi straight to the bomb

Hail a cab in London, say BOMB, and for £5 the driver takes you to the housing estate at Faslane where the bomb is hidden.

Episode two's screen reading FASLANE and ANOTHER IDENTICAL STREET
From Gordon Street to FASLANE: ANOTHER IDENTICAL STREET, location 200.

In VICE v3.14.0: from Gordon Street with the wallet carried, MOVE, TAXI until a cab stopped, then BOMB. The money went from £50 to £45.

The taxi (taxi, $7BAF) runs anywhere in London but the Barbican, and a cab stops one time in four (25 in 99). WHERE TO? takes a word, and the 18 words with tokens 0 to $11 are destinations (taxi_destinations, $7C6F): HOUSES, PARLIAMENT, GORDON, EUSTON, PADDINGTON, HEATHROW and the rest. The last of them is BOMB, which leads to location 200, a street on the estate (the estate's map is on the Maps tab). The story's own way there is a long chase: a bug planted on Winkler, his taxi down the M4 and a train to Glasgow. The cab skips all of it.

03 · Episode one

Bug: The break-in that never happens

Lock Building 17 badly and the game is meant to pick one of two memos: a break-in once in 99 times, a serious breach otherwise. It always picks the breach.

AddressInstructionWhat it does
$7CB1LDA #$01 · JSR randomA number from 0 to 98 in A
$639EAND #$7F · CMP #$63 · BCS · RTSInside random: a number of $63 or more is thrown away, so it returns after a CMP that found A below $63, with the Z flag clear
$7CB6BNE b_7CBFTests that Z flag, not the number: always taken
$7CB8JSR schedule_inMemo 31, the break-in: never reached
$7CBFJSR schedule_inMemo 32, the serious breach

In VICE v3.14.0, with random's state at $88-$8A set so that its next number is 0 and the failing branch of judge_security run from $7CAC: random returned 0 with the Z flag clear, and the game went on to memo 32. Run on a model of the processor from 2,999 other states, it went to memo 32 every time.

A 6502 branch tests the processor's flags, single bits that record what the last calculation gave; the Z flag says whether it gave zero. The flags come from the last instruction that set them. judge_security calls random and branches straight away, as if the number had just been loaded. Inside random the last instruction to touch Z is a comparison with 99, made only to throw out numbers that are too big, and it never finds them equal. So memo 31, A BREAKIN AT BUILDING 17. AN INTRUDER GOT AWAY WITH MONEY STOLEN FROM STAFF, is in the game and no player ever reads it. Episode 1 lets you try the locks.

04 · Episode two

Bug: £200 from the Treasury leaves you with £4

Your money is a single byte, a number from 0 to 255, so it cannot go past £255. The clerk who cashes the Treasury's authorization takes you past it, and the count starts again from 0.

A window reading THE CLERK TAKES THE AUTHORIZATION AND HANDS YOU £200
THE CLERK TAKES THE AUTHORIZATION AND HANDS YOU £200.

In VICE v3.14.0, at the accounts office (location 91) with the authorization carried and £60: afterwards money held 4.

money ($404F) starts at 50, and fares, tickets and the florist take from it (pay, $A7E7). use_authorization adds 200 with no check, so anything over £55 in your wallet wraps round: £60 becomes £4. With too little money left, the next fare you cannot pay ends the game.

05 · Episode two

Bug: A piece of notice board

At the gate of the Faslane estate, LOOK AROUND says YOU SEE A PIECE OF NOTICE BOARD.

Two windows: the gate's description, and YOU SEE A PIECE OF NOTICE BOARD
The estate's gate, location 213.

In VICE v3.14.0, LOOK, then LOOK AROUND at the gate.

Each of the 48 objects has an article: A, AN, SOME or A PIECE OF, numbered 0 to 3 (object_articles, $7CD8). The table has 47 bytes. The notice board is object 47, the 48th, so it reads the byte after the table, the first byte of object_names, $67. print_article ($4B15) prints A PIECE OF for anything above 2.

06 · Episode three

Bug: YOU YOU HAVE DEFUSED THE BOMB!

The line every player of episode three is working towards says "you" twice.

The room, and under it CONGRATULATIONS! YOU YOU HAVE DEFUSED THE BOMB!
The third wire cut.
EPILOGUE: an alliance government returned in the 1987 general election, early retirement, and a job in asset protection
The epilogue that follows it.

In VICE v3.14.0, from the start of play: USE SECOND, 12051987, CUT CABLE, PUSH RED, PUSH YELLOW, PUSH GREEN, CUT RED, CUT YELLOW, CUT GREEN.

The doubled word is in the message itself, number 110 in message_table ($1000), and cut_red ($B54E) prints it when the third wire, GREEN, is cut in turn.

07 · Episode three

Bug: PUSH ALL prints the wrong message

Once the bomb has been found, PUSH ALL says YOU SIDESTEP A VICIOUS ATTACK, and the bomb goes off.

The text window reading PUSH ALL and YOU SIDESTEP A VICIOUS ATTACK
No guard is in the room.

In VICE v3.14.0, from the start of play: USE SECOND, 12051987, PUSH ALL.

push_all ($B503) prints message 170, one of the four lines for an attack you evade (evade_messages). Message 160, which nothing prints, reads OK - PUSHING ALL THE BUTTONS AT ONCE. It is one digit away, and probably the line this command was meant to give before the explosion.

08 · Episode three

Secret: CUT BOX cuts the yellow wire

With the timer showing, CUT RED, CUT BOX, CUT GREEN defuses the bomb.

Each verb has a table of 28 routines, one for each noun (noun_tables). In CUT's table (cut_nouns, $B226) the entry for BOX is the yellow wire's, $B551, a byte inside the BIT instruction at $B550 that cut_red uses to start the yellow cut with A = 2. In VICE v3.14.0, CUT RED, CUT BOX and CUT GREEN with the timer showing counted the wires 1, 2 and 3, and the bomb was defused.

09 · Episode three

Secret: The ending depends on whether you typed an odd or even number of lines

If the bomb goes off, the epilogue you get depends only on how many lines you had typed, empty ones included. The 144th line sets it off whatever you do.

EPILOGUE from the annals of the Australo-Indonesian empire: an American base's retaliation and a nuclear winter
An odd count: the annals of the Australo-Indonesian empire.
EPILOGUE: the explosion at Faslane blamed on a NATO device, and unilateral disarmament
An even count: the blast blamed on NATO.

In VICE v3.14.0: an empty line, USE FIRST and 12051987 set the bomb off on the third line, with the first epilogue; commands_typed set to 143 and an empty line gave A CLICK ISSUES FROM WITHIN THE CABINET and the second.

commands_typed ($879A) counts every line. check_turn ($B62F) sets the bomb off when it reaches 144, and bomb_explodes ($A2F0) picks the epilogue from the count's lowest bit. Since 144 is even, running out of time always gives the epilogue in which the blast at Faslane is blamed on NATO's own bomb.

10 · Episode three

Secret: The submachine gun the manual promises

The manual gives Preston a submachine gun. Episode three has a whole shoot-out written for it, and no way in.

shootout ($A7D1) puts a cross-hair (sprite 0) on the room, moved by the cursor keys or a joystick in port 2 and fired with the joystick's button or the Commodore key, with 192 rounds (ammunition). A guard walking past the window can be shot; three hits on the alarm box silence it; 48 hits on the cabinet end the game. Its sprites, the cross-hair and the bursts, are in the file, and so are four messages about the gun, numbers 124 to 127, that nothing prints. The only way into it is a JMP at $A006, and nothing jumps there.

11 · Episode one

Secret: The voice prints that match are the same scribble

The voice analysis shows the unknown caller's voice print and lets you compare it with a suspect's. Neither is recorded anywhere.

Each print is a jagged line drawn by draw_line_graph ($4602) from a random generator started from a number chosen for that voice, its seed (seed_random, voice_seeds at $464B). The same seed always gives the same line. The unknown voice uses seed 0, and so does STIG NILSON's, so his print is the same scribble and that is the match. Only the first twelve people have a voice on file.

12 · Episode one

Bug: Watchers on a new name never see anything

You can put watchers on any surname you type, but on a name the game does not know they never report a thing.

The game knows 16 targets, each with a day from which its watchers can find something (target_day, $5DAB). A surname it does not know becomes one of 16 new targets (new_target, $52C1), and their day is 99. The game lasts 40 days, so the day never comes, and the watchers you spend on them are spent for nothing.

13 · The code words

Secret: The code words

The words and numbers the episodes ask for, as the code checks them.

TypeWhereWhat it does
TIPTREEEpisode three, the first screenStarts play. Any line that begins with TIPTREE will do (check_codename, $C0FF), so episode three can be played from the menu without the other two.
12051987Episode three, after USE SECONDOpens the drawer with the bomb (type_number, $B298).
ASPENEpisode two, the lift at Gordon'sThe only way from your floor to the street (lift, $496C).
42431282, or EPCEpisode two, the lift at Sentinel HouseEither works (lift).
BOMBEpisode two, a taxi in LondonGoes to location 200, a street on the Faslane estate, where the bomb is hidden.
12377563Episode one, MAKE A CALLSir Anthony Plumb, who asks the six questions that can win the episode (plumb_questions, $501B).