INSTRUCTIONS
- 1.
- Insert quarter and press start; your rocket ship will appear.
- 2.
- There is no gravity in space, rocket speed can only be changed by thrust.
- 3.
- Evade the saucers' missiles and use yours to score hits.
- 4.
- Outscore the saucers for extended play in hyperspace.
This is a virtual DEC PDP-1 emulated in HTML5/JavaScript running a simulation of "Computer Space", the earliest known arcade video game. The PDP-1 emulation has been originally conceived for running Spacewar!, the first known video game for a digital computer, but is here repurposed to run a simulation of the arcade game that Spacewar! inspired.
The original arcade game Computer Space by Nolan Bushnell and Ted Dabney (Syzygy Engineering) / Nutting Associates, 1971.
The program simulating it on the PDP-1 is new code from 2016.
PDP-1 emulation by Norbert Landsteiner, www.masswerk.at, 2012–2016.
The emulator is based on code by Barry Silverman, Brian Silverman, and Vadim Gerasimov. The emulation was substantially extended to support additional instructions and auxilary hardware. Especially the shift/rotate instructions and the arithmetics were rewritten and now include an emulation of the automatic hardware multiply/divide option. Further, cycle counts were added for accurate timing and frame rates. Some importance was put in the recreation of the appearance of the original CRT display and the unique experience conveyed by it. An additional splash-screen renders original character definitions from 1964.
For further information on the PDP-1, its Type 30 CRT Display and the emulation see www.masswerk.at/spacewar/.
Note on Browsers (Chrome)
(Updated 2019-05-29) Google Chrome may have issues running the emulation smoothly, rather grinding along at single-digit frame rates. If you experience any problems, you may want to try a non-Chromium browser like Apple Safari or Mozilla Firefox instead.
Apparently, the problem is related to (faulty) hardware acceleration in Google Chrome. In order to disable hardware acceleration, choose (in Chrome): Settings → Advanced → System → Hardware acceleration → disable + restart the browser.
About Ironic Computer Space Simulator
This is my entry to Retrochallenge 2016/10, a program for the early 1960s DEC PDP-1 computer to run a simulation of "Computer Space", the first coin operated arcade video game of the early 1970s.
In 1961 Martin Graetz, Stephen Russell, and Wayne Wiitanen conceived Spacewar!, the first digtal realtime video game, as a showpiece application for the PDP-1. A first, short article on the game appeared in April 1962 and in the following month, May 1962, the game was presented to a stunned public in the course of the annual MIT Sience Open House.
Ten years later, in 1971, Nolan Bushnell, presented the very first coin operated arcade video game, Computer Space. Bushnell was heavily influenced by seeing Spacewar! on the PDP-1, but he could not afford a pricey computer for a machine that was to be placed at public locations and to return the investment by quarters. Consequently he teamed up with Ted Dabney (thus Syzygy Engineering) to construct his game in TTL logic (mainly 74xx-series chips) and eventually partnered with Nutting Associates to produce the machines. Notably, Computer Space is not a program, but an electronic device — or, as Nolan Bushnell once put it, a "big, fancy signal generator".
45 years later we attempt — by what may be called an ironic twist in history — to bring the game to the machine which's showcase program had started it all. While Spacewar! stepped out to simulate orbital mechanics and space flight on the PDP-1, here, we're using the venerable machine to simulate the mechanics of another space game. However, we do not attempt an accurate simulation of Computer Space, but rather a game that is similar in look and feel, choosing alternate solutions where a close reproduction would not do for the platform. The program is written in assembler code for the PDP-1 and the resulting object code is loaded into the emulated machine from a virtual paper tape.
The PDP-1 Program (v. 1.2, Nov 23, 2016)
The program worked out rather nicely and should be fun to play. It models the original arcade game fairly well and even features an explosion effect of its own and some optional enhancements, as well. The major difference to the original Computer Space is the display of a larger, square play field without any clipping. Most amazingly, the game is running at 60 fps (even with some throttle, i.e. idle cycles, to adjust the pace of the game) — a testament to the realtime capabilities of the DEC PDP-1, a computer, which was first presented in 1959.
BTW, Please mind that computer space is not an easy game and be ready for some frustration. :-)
Some Fun Facts
There are some peculiarities, which are not an error:
- The shots of the rocket ship originate at the hull or "belly" of the ship.
- The saucers' cannon is located at the lower right of their rim.
- There is actually just a single saucer and a mirror image of it in Computer Space. And, like in real life, the Fata Morgana never shoots. (But, see the sense switch options below.)
- The player's torpedoes are in fact guided missiles and may be steered by rotating the ship. However, the controls are not too easy to master.
- In the original game, sporadically, the saucers are failing rather miserably in their aiming skills. While this is important factor to the experience and gameplay, the PDP-1 simulation may still improve in this aspect.
- The player's score is famously displayed in hexadecimal digits (i.e., wraps around at 16), while the score of the saucers and the time are displayed in decimal figures.
- You win an extra play (Hyperspace Mode, in the original game in reverse video) even if you beat the saucers by a counter overflow/runaround. Since we can't do reverse video on an X/Y display, this special bonus mode is here indicated by some moving dots at the bottom of the CRT display.
- While Ironic Computer Space Simulator remodels these scoring bugs, they may be disabled by sense switch 6 (see below): When this option is active, scores are maintained correctly internally without wrap-around and the repective displays are truncated to the least significant hex-digit for both the player's rocket ship and the saucers.
- In the origional game, a saucer's explosion is indicated by a flashing screen and a boom sound. Since we can't do neither (there's no sound on the PDP-1), there's a period style explosion animation of our own.
- There's a JIT compiler in the PDP-1 program to generate high speed code for drawing the character outlines of the scores/time display. (There aren't any symbols implemented in hardware and, since there's also no video memory, every dot on the screen has to be redrawn each frame by the program.)
- Like Spacewar!, the game is controlled either by the test word switches on the operator's console or by MIT-style "control boxes," the very first gamepads invented for Spacewar!. (The restored PDP-1 at the CHM features two sets of controllers using arcade buttons for input, wired up like the original "control boxes.") In the emulation keyboard input is mapped to these input methods. Also, gamepads may be supported in some browsers.
- Finally, as mentioned above, the PDP-1 version of the game takes place on a much larger, fully exposed play field at a much higher resolution than the game generated by the original Nutting Associates machine. In figures the PDP-1's Type 30 CRT display features a technical resolution of 1024 × 1024 display locations, while the arcade machine uses a customized NTSC TV-set to display a clipped region of a 4:3 aspect ratio. In the original Computer Space game, there is apparently a larger off-screen area on the vertical sides of the screen than horizontally, suggesting an internal play field of roughly square proportions, as well. Moreover, the TV monitor utilized by the arcade machine is a raster display, while the Type 30 CRT display is a point plotting X/Y-display without any memory, featuring a distinctive dual P7 phosphor of a bright blue short activation phase and a yellowish-green long persistence.
Sense Switch Options
There is an array of 6 switches on the control console of the PDP-1 in order to communicate with a program. We use these "sense switches" (in the emulation represented by checkboxes at the top right of the virtual screen) to provide a few additional configuration options that are not in the original game:
Sense Switch 1 | .... | Background: Parallax Effect
|
||||
Sense Switch 2 | .... | Background: Parallax Effect Strength (together with sense switch 1)
|
||||
Sense Switch 3 | .... | Torpedo Agility (Steering)
|
||||
Sense Switch 4 | .... | Saucer Motion
|
||||
Sense Switch 5 | .... | Saucer Piloting — Which saucer is shooting?
|
||||
Sense Switch 6 | .... | Scoring Mode
|
Version History
- Vers. 1.2, Nov 23, 2016: Refined alternate scoring method (no reset, evaluation of winner per play).
Vers. 1.1, Nov 12, 2016: Added a timout to the on-screen scores to prevent burn-in on the real machine.
Minor adjustments to the positioning of the saucers on respawn.
Scores are now reset at the start of an extra play, when the optional scoring method (sense switch 6) is active.Vers. 1.0, Nov 10, 2016: First release version.
Adjusted pace and parameters (now exactly 60 fps!).
New option to disable the original scoring bug.
Otherwise, player wraps at 16, saucers at 10.
Torpedoes now always follow the turn of the ship.- Vers. 0.9.4/5, Nov 5, 2016: All new saucer explosion.
- Vers. 0.9.3, Nov 3, 2016: Minor adaptations.
- Vers. 0.9.2, Nov 3, 2016: Added a tiny animation as an indicator for "Hyperspace Mode" (extra play).
- Vers. 0.9.1, Nov 1, 2016: Minor adaptations.
- Vers. 0.9.0, Oct 31, 2016: First prerelease (final version as for Retrochallenge 2016/10).
- Vers. 0.0.1, Oct 12, 2016: Start of project.
Source code (v. 1.2, PDP-1 Macro assembler, for binaries and listing, see the related links): icss-1-2.txt.
Sound FX
While the PDP-1 has no capability to output sound directly, we provide here an option to add realistic sound effects of the arcade machine. The sound samples are those of Mike "Moose" O'Malley's Computer Space Simulator for Windows and are further processed in realtime to produce a fairly realistic sound-scape. (Processing involves the adjustment of individual gain levels, mixing in a compressor, adding a bit of resonance by a low-shelf filter, and a final step of convolution applying an impact response profile for room effects.) The emulation observes the program counter of the emulated
And, for a giggle, there are also optional subtitles for the FX!
Related Links
- Short video of the first run on real hardware (Dec. 2016) at the Computer History Museum, Mountain View, CA.
- My Retrochallenge 2016/10 writeup/blog on the "Ironic Computer Space Simulator".
- Video review of the machine, gameplay towards the end (at 23:00): Computer Space – (Nutting Associates 1971)
- The original Spacewar! game running in this PDP-1 emulation.
- The Minskytron and other display-hacks running in this PDP-1 emulation.
- See the fully restored DEC PDP-1 at the Computer History Museum (CHM) in Mountain View, CA.
- Vist computerspacefan.com for all sorts of information on Computer Space.
- Read about Computer Space at They Create Worlds (Alexander Smith, videogamehistorian.wordpress.com).
- Read "Computer Space and the Dawn of the Arcade Video Game" by Benj Edwards.
- Visit Retrochallenge.net, home of an event "very much open to interpretation…".
- Read "Fixing Computer Space" by Ed Fries (2015).
- Watch this series of repair videos by John Jacobsen (John's Arcade Game Reviews & Tech, 2015–2016).
- Ironic Computer Space Simulator, source code & binaries: icss-1-2.zip (source for PDP-1 "Macro" assembler, macro1.c).
— Have fun! —