← All games

Decathlon

Activision · Atari 2600 · 1983

David Crane's ten events of track and field for one to four athletes: run by moving the joystick left and right as fast as you can, and press the button to jump, put, throw and vault. The cartridge's own program, translated into JavaScript one instruction at a time with every cycle counted, so every race runs exactly as on the console.

The title screen: an athlete carrying the torch along the blue track below the stands, and DECATHLON, Copyright 1983.
Press Power on, then Game Select to pick a game
◀▶
← → in turn to run · Space or Z fire button

How to play

Ten events in a row, scored in points: the faster you run and the further or higher you jump and throw, the more you score. Running is the joystick moved left and right, again and again: the faster you change direction, the faster your athlete runs. Every event starts with a run.

Controls

  • Game Select (pick a game)X
  • Game Reset (start)Enter
  • Joystick (run: left and right in turn)arrows / WASD
  • Fire buttonSpace or Z
  • Pause · MuteP · M

Gamepad: stick or D-pad to run, A/B/X/Y for the button, Start for Game Reset, Back for Game Select. Keyboard and pad work together.

The cartridge reads only Game Select and Game Reset; the Color/B&W and difficulty switches do nothing in this game, so the page leaves them out.

Picking a game

Each press of Game Select shows the next of 14 games: the whole decathlon for one, two, three or four athletes (the numbers 1 to 4 appear on the field), then each of the ten events on its own. Game Reset starts the game shown. During a decathlon it starts over from the 100 metres; during a single event it restarts that event.

The athletes take turns on the one joystick: each event is run by athlete 1, then 2, and so on. A single event is always for four athletes, and the game waits for each one's turn, so on your own press Game Reset to run it again (or play Enhanced, whose single events are for one athlete).

Original or Enhanced

Original is the cartridge exactly as it plays, checked against the ROM frame by frame (released as original-1.0).

Enhanced runs the same game with quality-of-life options you can switch on and off under the screen: once a result or an attempt's wait has shown for a second, PRESS FIRE skips the rest of it (the wait's frames still run, fast, so scoring is untouched, and the next race still opens with its starting gun); single events for one athlete instead of four; run assist (hold one direction and the athlete runs at a steady 12, 16 or 20 pushes a second, for keyboards, phones and anyone who can't waggle; the hint under the screen says when it's on); personal bests: the game's own points for each event and your best decathlon total, kept in this browser, with run-assisted scores kept apart (a decathlon with any assisted event counts as assisted); the stadium: a starting gun as each race opens, a crowd that builds through the race and roars at the finish, and cheers or a groan for every jump and throw (all synthesised; the cartridge has none of it); and a 3D stadium view: the same game, picture for picture, rebuilt as a small stadium with lanes, shadows and a camera you can move. Your choices are remembered too.

Running

Press ← and → one after the other as fast as you can keep it up: the game counts every push of the joystick, and the bar under the track shows your speed. Speed comes in steps: about 12 pushes a second runs the 100 metres in 11.3 seconds, 16 a second in 10.2.

Every push counts, so tapping one direction alone works as well as alternating. Both directions at once count as neither, as on a real joystick.

On a phone, rub your thumb left and right across the ◀ ▶ pad, or tap its two halves in turn, and press Fire with the other thumb.

The ten events

  1. 100 metres: run.
  2. Long jump: run, and press the button as close to the scratch line as you dare: the later the take-off, the longer the jump. Over the line is a scratch.
  3. Shot put: run at full speed and press the button before the scratch line; the speed at the press decides the distance.
  4. High jump: run, and press the button a stride before the bar (pressing at the bar is too late). The window is tiny, about three frames (a twentieth of a second). A faster run-up clears higher bars: about 16 pushes a second clears 2.2 m where 12 a second tops out at 2.0 m.
  5. 400 metres: run.
  6. 110 metre hurdles: keep running the whole way, in the air too, and press the button a stride before each hurdle. A little early is fine; too late, and you hit the hurdle, which is worse than not jumping at all.
  7. Discus: as the shot put: full speed, then the button before the line.
  8. Pole vault: once the box is on screen, press the button to lower the pole (it plants itself in the box; lowered before the box appears, it fails), and keep running. Press again as the pole straightens to let go: the window is about a sixth of a second around the top, so don't wait to see the top. Pressing only at the box is too late.
  9. Javelin: run, and throw as close to the scratch line as you dare: the closer, the longer.
  10. 1500 metres: there is no stamina to save. Keep a steady run; speed counts most on the final stretch, so sprint there.

In the field events each athlete gets three attempts in a row and the best counts. In the high jump and pole vault the bar goes up after each clearance, and three misses at one height end the event (misses at lower heights don’t count toward it). Holding the button scores nothing extra: only the moment you press it counts. A button held down when a run is about to start keeps the athlete waiting until you let go.

The events

The 100 metres: the athlete running along the blue track, the clock reading 2.75.
100 metres: the clock runs until you cross the line.
The 110 metre hurdles: the athlete running toward a hurdle.
110 metre hurdles: hurdles to clear on the way.
The pole vault: the athlete running with the pole.
Pole vault: plant the pole, then let go at the top.
The javelin in flight over the field.
Javelin: the throw in flight.

Built from the ROM

This is not an emulator, and not a remake. The cartridge was disassembled from scratch (no published source existed), reassembled to prove the disassembly byte for byte identical to the cartridge, and then a translator wrote out each instruction as a line of JavaScript with its cycle count. The translated game runs on a model of the 2600's TIA and RIOT chips, and a 6502 core runs the real ROM beside it to prove the two match.

0differences from the cartridge in 150,000 compared frames: registers, bank, cycles, RAM, chip writes and pixels
2,846instructions translated, each with its cycle count
98.4%of the instructions executed in those comparisons: whole decathlons for one and four athletes played start to finish, and random input on every control
8,192bytes in the whole cartridge: two 4K banks
Read in the ROM. A few things the code shows:
  • Decathlon switches between its two 4K banks in Activision's own way, which only it and Robot Tank used: there are no switch addresses. The cartridge watches the bus, and when a subroutine call or return passes through the top of the stack, the address being jumped to picks the bank. Code in one bank sits at $Fxxx, in the other at $Dxxx, so calling a routine is all it takes to switch.
  • That makes the order of the processor's bus accesses part of the game: the port's 6502 makes a subroutine call's stack writes and address reads in the real chip's order, or the wrong bank would answer.
  • Of the console switches, the code reads only Game Reset and Game Select.
The port keeps all of it, because that is the game.