Missile 20th Anniversary
The Macintosh is over 20 years old...
...and so is the Oldest Full-Screen Macintosh Game
Missile is a simple but relatively engaging game resembling Atari's "Missile Command" for the Apple Macintosh. I was a student at Dartmouth in 1984, and as soon as the hardware became available I began developing software for the Macintosh. The only practical development system was a Lisa running a set of tools collectively called the Lisa Development System. It included a Pascal compiler, assembler, linker and a utility to write the special Mac 400K floppy disks. Here is the source code and here is the binary.
I finished the first version of Missile on June 1st 1984, and the file still bears that creation date. By August I was up to version 2.3, and had added important changes to ensure compatibility with future models, following the published guidelines from Apple. As a result of following these suggestions, and diligent attention and dedication for over 20 years by Apple engineers, Missile is (to the best of my knowledge) the only full-screen game that runs on every Mac model in its 20-plus year history. Not only does it run, but the gameplay (difficulty) is the same because it regulates its speed. It runs exactly the same on a dual 2-GHz G5 running Tiger as it does on an 8-MHz 68000 Macintosh 128K.
I don't have a 128K Mac anymore — almost everyone who had one upgraded it, or made it into a MacQuarium after its analog board burned up — and I didn't yet have my Dual G5 — I had to wait for an affordable refurb unit. But, this picture spans almost the complete range of the Mac's history, from Sep 1984 to Oct 2003. Shown here are an 800-MHz G4 running Panther on the left, and a 512K Mac booted from the oldest System floppy I could find (one of the 1984 versions, System 3-point-something I think) on the right.
Missile running side-by-side on an iBook G4 and a Mac 512
(The iBook G4 is in dual-display mode, using the excellent Screen Spanning Doctor patch, to show that Missile properly handles dual display systems.)
- Missile fills the screen and places the cities, score, etc in the appropriate places on any size screen. If you have multiple screens it uses the primary screen (the one with the menu bar).
- It runs at the proper speed on all models. When run on a faster machine, it runs at exactly the same speed as on the original 128K Macintosh with its 8-MHz 68000 processor. (Most games fail to maintain consistent speed and therefore become unplayable on faster machines. Note that Missile fails to delay properly during the "GAME OVER" message that appears at the end of a game. This was an accidental omission but allows you to see what it would be like if it hadn't been designed right.)
- When another window (including a desk accessory under older versions of MacOS) comes up in front of Missile's window, Missile detects this and pauses, then resumes as soon as its window is brought back to the front. Even cooler — when a transparent overlay window, such as Dashboard, is brought up Missile keeps running.
- Missile uses the GetPixel call to determine when an enemy missile hits a fireball. This call is dependent on the idea that the image in the window is one-bit-per-pixel. On newer systems, such as MacOS X, the window is color — as evidenced by the antialiasing that the MacOS automatically adds to the text displayed by Missile. Nevertheless, the collision detection still works.
This site is not affiliated with the Atari or Apple companies.
Apple, Atari, G5, Lisa, Mac, Macintosh, MacOS, MacOS X, Missile Command, 68000, and all other brand names, trademarks and service marks are the property of their respective owners.
This page was written in the "embarrassingly readable" markup language RHTF, and was last updated on 2012 Mar 18. s.27