SPACE VIKINGS

SPACE VIKINGS

A 1982 Apple II space-combat game, rebuilt in the browser and measured against the original floppy. Twenty planets to take, one ship, and a crew whose morale you can ruin.

Press N for a new game · O to load one
CPU PILOT STATUS
WAITING...

You do not steer. You bank.

The Apple II shipped this game with paddles, and the paddles do not point the ship — they set a rate. Each pass of the main loop adds a step to your pitch and your bank, and it is the bank that brings the nose round. Let go and the bank stays where it got to, so the ship keeps turning until you bank back the other way. It is a roll, not a yaw, and it is the whole feel of the game.

FLYING
  • Bank left / right← →
  • Nose up / down↑ ↓
  • Speed, small steps1 2
  • Speed, large steps3 4
  • FireSpace
  • Missile / laserW
SHIP
  • AutopilotA
  • Battle conditionB
  • ShieldsS
  • RadarR
  • HyperdriveH
  • Computer / ordersC

That is every key the flight loop answers — the original's table is exactly this long, and the port's matches it.

A WARNING ABOUT PACE

This game is slow, and deliberately so. One pass of the main loop takes about 2.5 seconds on real hardware, and that is one step of movement and one new picture. A missile leaves the rack every 6.69 s.

All of that is measured, not guessed — and if you would rather not play at 1982 speed, the switches below will speed it up.

Seven switches, all off

Anything that makes this nicer than the machine was is an addition, and an addition that is always on is indistinguishable from a bug — you can no longer tell what the game did. So every one lives behind a switch in the QOL panel, in the top right corner of the game screen, and every one starts off. A browser that has never seen this page plays the game the Apple II played.

PICTURE

The filters come off

These three are the odd ones out: they were already on, hard-coded into the blit, until someone asked why the text looked fuzzy. A bilinear upscale, a second pass in screen blending so bright pixels bleed, and a dark line every other row.

None of it was measured and none of it is what you are meant to be looking at — an Apple II pixel is a hard-edged pixel. Off is nearest-neighbour and nothing else. Turn them back on if you miss the glass.

PLAY

Gamepad

Stick or d-pad to fly, A to fire, B for return, X for the weapon toggle, Y for the computer, shoulders for speed. The keyboard keeps working alongside it.

The stick is the interesting part. This game was built for paddles, and a paddle is analogue — so a stick hands the flight model a real deflection and the gentler turns become available. A key can only ever be full tilt.

PLAY

Fast fire & smooth flight

Fast fire puts the trigger at about half a second. The machine tests the button once per pass of its main loop, which measured at 6.7 s for a missile and 6.0 s for the laser.

Smooth flight carries the view forward between steps, so the starfield drifts instead of jumping. The machine moves the ship once per pass — about every 2.9 seconds — and off is exactly that: one jump, then stillness. The ship's own position stays stepped either way.

SAVING

Save slots

Four saved games instead of one, and a saved game that comes back where it was.

Off is the disk, and the disk is unkind here: it keeps one save, a new game destroys it, and the ship's position is in none of the three blocks it writes — so switching the machine off loses where you were and which planet you were at. That is faithfully reproduced, and this is the way out of it.

Where it came from

Space Vikings is a space-combat and conquest game for the Apple II, published in 1982 by subLOGIC and developed by Mitchell Robbins - the asterisk card says only G.M. ROBBINS, and it is the second opening screen, the one with the grid, that credits either of them properly. You command one ship in a galaxy of twenty planets: fly, fight whatever is defending the place, bombard it, land troops, take the surrender, and move on. There is an economy underneath — loot to sell, repairs to pay for, troops to enlist, bases to build — and a crew whose morale you can wreck by working them without leave.

Technically it is a 140 KB DOS 3.3 floppy holding 23 chained Applesoft BASIC programs, each of which RUNs the next, plus machine-language modules for the things BASIC was far too slow for: the 3D projection, the shape drawing, and the flight controls. Changing screen means loading a program off the disk, which is why moving between the cockpit and the computer costs a visible second and a quarter.

A single pass of the flight loop — read the paddles, move the ship, draw the starfield, flip the page — takes two and a half seconds. That is not emulation overhead. That is how fast the game ran in 1982.

How it was ported

Not by reading the BASIC and reimplementing it. The listings tell you what the author wrote; they do not tell you what the machine does — and on this project the difference turned out to matter again and again.

So the port is built against an oracle: the real game, running on an Apple II emulator inside a headless browser, driven by a script that can press keys, read memory and screenshot the hi-res page. Everything goes through two stages.

STAGE ONE — CAPTURE

A probe asks the machine

Boot the disk, play to the thing in question, and record what happened — the bytes, the screen, the timing. The answer is written to a golden file. There are 113 of these.

STAGE TWO — COMPARE

A harness checks the port

Drive the port the same way, through its own screens, and compare against the golden — pixel for pixel where it is a picture, value for value where it is a number. There are 53 of these, and they all have to pass.

THE RULE

The disk wins

Where the port and the floppy disagree, the floppy is right — including when it is obviously a bug, and including when the manual says otherwise. The findings are written up as they are measured, in a document that is now about 6,700 lines long.

Several harnesses were, at one point, quietly meaningless: some built the screen they were about to compare against, and some printed a report and exited zero whatever it said. The flight controls were wrong for most of the project's life while forty-eight suites passed — the measurement existed, sat in a file, and nothing read it. Every harness now has to be shown failing before it is believed.

What the disk actually said

A sample of things that are true of the original, that nobody would have guessed, and that the port now does too.

SAVING

Your position is not saved

The save writes three blocks to disk, and the sixteen bytes holding the ship's position and attitude sit in the gap between two of them. Save and continue in the same session and the ship is where you left it; switch the machine off first and it starts over, at the wrong planet.

TURNING

The hardest turn is unreachable

The table that turns bank into heading has a strongest row, at a bank of 48. The clamp that stops you banking too far stops at 47. One short, so that row can never fire in play.

PITCHING OVER

A half turn that is not half

Point the nose far enough back and the heading flips. The flip adds 126 and wraps at 253 — while every other angle on the ship wraps at 256. So it is not quite a half turn, and flipping twice leaves you one off where you started.

THE CREW

Shore leave, or else

Put your troops on the ground, then jump to another system without stopping for shore leave, and morale drops a point. Taking the leave is what clears it — and the flag is set before the game asks whether you will pay them. They got their leave either way. They just did not get paid.

  15 FOR OO = 0 TO 1: IF PEEK(38164) = 1 THEN 20
  19 J = PDL(1):K = PDL(0): POKE 38397,J: POKE 38398,K
  20 P = PEEK(P1):B = PEEK(B1):H = PEEK(H1)
 129 ... X = X + X1:Z = Z + Z1:Y = Y + Y1 ...
 150 CALL CA
STARSHIP SIMULATOR, the flight loop. Line 19 reads the paddles, 129 moves the ship, and 150 is where the controls are finally applied — after the move, from paddles read before it. Getting that order wrong changes how the ship handles.
53parity suites, all green
113probes that ask the real machine
23Applesoft programs on the floppy
20planets in the galaxy
2.55sone pass of the flight loop
6.69sbetween missiles, measured
1.29sto load the next screen off disk
0findings taken from the old analysis without re‑checking