Asteroids Multigame Kit -- Lunar Lander

The implementation of Lunar Lander for the Asteroids Multigame required significant changes to the game software in order to work in the absence of the analog thruster control, absence of the mission indicator lamps, and absense of all the analog sounds. Additionally the original Atari implementation of free play was in need of some user interface improvements.

The Asteroids Multigame is based off the later -02 ROM version of Lunar Lander. The -02 release has more configurable fuel options. Due to hardware limitations and other design considerations, English is the only language supported by the Asteroids Multigame.


Table Of Contents

Lunar Lander Game Play

The following paragraphs contain excerpts from the original Atari Lunar Lander Manual. The section of interest is chapter 2 "Game Play".

Lunar Lander is a one-player coin-operated electronic game that simulates landing a manned spaceship on the moon. Various video-display phrases indicate score, time elapsed during this landing mission, fuel units consumed, altitude above the moon, and horizontal and vertical speed. The fuel consumption and both speed readings are important for the player to determine how to land the craft. Realistic engine rumble and crash sounds accompany game play. A high beep warns of an almost-depleted fuel supply, whereupon players can add coins to automatically extend the game and "fill up" their fuel tanks. Depending on the quality of the landing or the crash, various messages are displayed on the screen.

The Lunar Lander game has four basic modes of operation: attract, ready-to-play, play and the self-test. The attract mode starts after power-up, after the play mode, or after the self-test. It ends when a coin has been inserted into either coin slot. The ready-to-play mode follows the attract mode and begins after a coin has been inserted. It ends when with the pressing of the LED start switch.

The play mode begins immediately after the ready-to-play mode, when a player presses the start switch. (The game does not automatically start after a certain time has elapsed. i.e. pressing the start switch is the only way Lunar Lander will begin the play mode.)

The attract mode is specifically programmed to attract potential players by displaying the basic sequence of game play. The lander module flies horizontally across the screen, drifting slowly toward the bottom right corner. At the end it "crashes" into a canyon wall.

The sequence is reset, and a new landscape panorama is displayed. The center of the screen display the message INSERT COINS and xxx FUEL UNITS PER COIN in English or one of the three foreign languages. The previous game score is displayed after the word SCORE for player encouragement.

Ready-to-play mode This mode starts when either coin switch is activated by a coin. The messages SELECT OPTION, PUSH START and xxx FUEL UNITS appear on the screen until a player pushes the LED start switch.

play mode. Similar to attract mode, actual game play begins with engine rumble and the lander drifting toward the bottom right corner of the screen. Horizontal and vertical speeds are constantly displayed, including two arrows to show the horizontal and vertical directions of travel. Altitude is measured in distance above the surface of the mountain - not above "sea level". The screen also shows the time in actual seconds, representing time elapsed in the current mission.

The scoring system gives 50 points for a good landing, plus 50 fuel units as a bonus. A hard landing earns only 15 points, and a crash earns 5 points. A crash happens when the vertical speed exceeds 15 and the horizontal speed exceeds 31. The number displayed after the SCORE is cumulative of all landings made in the current game. The point scores for a good or hard landing can be greatly increased by landing on an area with a flashing multiplier, for example 2X or 5X. Thus, a good landing on the very narrow 5X site would award that player 250 points.

As already mentioned in chapter 1, the operator can select from up to eight different settings for fuel units - 450, 600, 750, 900, 1100, 1300, 1550, or 1800 fuel units per coin (free play is also available). as the lander module flies over the landscape, it approaches the mountains and a landing site. At a certain point near the mountains, the game "zooms in" for a close-up view of the landing zone.

If a player realizes the speed is too fast and the landing looks hopeless, he or she can press the ABORT button on the control panel. This will give the lander extra thrust and make it fly up-wards at top speed. The abort feature does consume 120 to 180 fuel units, though as a disincentive to overusing it. If the ABORT button is pressed too late, however, a crash cannot be avoided.

The four levels of mission difficulty are determined by the player and can be changed at anytime during the game or the ready-to-play mode. The difference between the four are printed on the mission select panels and are self-explanatory, except perhaps the rotational momentum. This feature causes the lander to tumble around when either ROTATE button is pushed. The longer either button is held down, the faster the lander module will spin in that direction. The player gains control of the lander by pressing the other ROTATE button for the same amount of time.

(scottb, fixme, finish this section)

Lunar Lander Button Mapping

The following table shows how the Lunar Lander control panel buttons are mapped onto a Asteroids control panel.

Lunar Lander Button Asteroids Button Notes
COIN INPUTS COIN INPUTS Adds fuel units
START P1-START Starts a game. Asteroids Multigame enhancement: When configured for freeplay, during low-fuel warning, p1-start can be used to add more fuel units.
SELECT P2-START Mission select. Toggles through all 4 mission types. See section below about Asteroids Multigame enhancements to indicate the current selected mission.
ROTATE LEFT ROTATE LEFT Rotate left
ROTATE RIGHT ROTATE RIGHT Rotate left
ABORT HYPERSPACE / SHIELDS Aborts the current mission
(Analog) THRUST THRUST and FIRE Configurable. See Lunar Lander thrust section
SLAM SLAM Ignored by Asteroids Multigame
TESTMODE TESTMODE Resets the game, enters Asteroids Multigame testmode

Lunar Lander Thrust

The original Lunar Lander used a large analog thrust controller for playing the game. The Asteroids control panel only has buttons. The Asteroids Multigame makes use of the "THRUST" and "FIRE" buttons to emulate the analog thrust controller. In order to provide flexibility, the Asteroids Multigame allows configuration of how these buttons control the Lunar Lander thrust, including how the buttons work and at what speed.

There are several different ways the multigame can be configured for thrust.

Type Thrust Button Fire Button Notes
up/down up/down up/down up/down Pressing (and holding) either the thrust-button or fire-button causes the game to increase thrust. When neither of the buttons are active, then thrust will decrease (decay). The configured rate determines how fast (sensitive) the buttons behave.
up/down kill up/down kill Pressing (and holding) the thrust-button causes the game to increase thrust. When the thrust-button is not active, then thrust will decrease (decay).
Pressing the fire-button causes thrust to be immediatly killed (set to minimum). The configured rate determines how fast (sensitive) the thrust-button behaves.
up/down hold up/down hold Pressing (and holding) the thrust-button causes the game to increase thrust. When the thrust-button is not active, then thrust will decrease (decay).
Pressing (and holding) the fire-button causes thrust to be frozen (held). It remains steady until the fire-button is released. The fire-button has priority, so if both buttons are pressed the game thrust remains in a held state. The configured rate determines how fast (sensitive) the thrust-button behaves.
up/down up/down   notes.
kill up/down kill up/down notes.
hold up/down hold up/down notes.
up/down   up/down notes.
up down (sticky) up down Pressing (and holding) the thrust-button causes the spaceship to increase thrust. When the thrust-button is not active, then thrust will remain steady (held) ie. sticky.
Pressing (and holding) the fire-button causes thrust the spaceship thrust to decrease. When the fire-button is not active, then thrust will remain steady (held) ie. sticky. If both buttons are active there is no change in spaceship thrust. The configured rate determines how fast (sensitive) the buttons behave.
down up (sticky) down up notes.
external digital     EXPERIMENTAL at this time. External (digital) hardware connected to the POKEY ports POT0 through POT7 must provide 8 digital bits of spaceship thrust values. In digital mode the Asteroids Multigame samples the 8 bits of data using the pokey fast scan mode. In this mode the POKEY is simply acting as a mechanism for the game to read 8-bit digital values similar to how DIP switches are handled. It is the responsibilty of the attached hardware (not part of the multigame) to provide the analog to digital conversion. See also External Thrust Control

At the start of each mission the internal thrust level is reset to the MINIMUM.

Unfortunately there is no accurate indicators of the current thrust level other than the size of the flame coming from the spaceship and how loud the thrust sound is. Neither of which is very accurate. Because Lunar Lander has so many vectors to draw it was not possible for the Asteroids Multigame to add any visual indicators because that would greatly reduce the effective video frame rate causing flicker and would alter the timing of the game. Lunar Lander already uses a slower video frame rate than asteroids to compensate for the extra vectors being drawn. For those reasons, the Asteroids Multigame does not indicate the emulated thrust level.

Lunar Lander Mission Lamps

Lunar Lander game has 4 different mission types that can be selected (Training, Cadet, Prime, and Command). On an original Lunar Lander cabinet this mission is indicated by the game lighting one of 4 mission lamps. Since asteroids does not have these lamps several software modifications where done to the Asteroids Multigame to show visual feedback of what the current mission is.

When "P2-START" is pressed, a splash screen similar to the 'ready-to-play' screen is displayed. This screen will show one of 4 boxes similar to the original Lunar Lander lamps indicating the current mission. When "P2-START" is pressed again WHILE THE SPLASH SCREEN is displayed, the Asteroids Multigame will toggle to the next mission and display it. After about 12 seconds where "P2-START" has not been pressed, the Asteroids Multigame will revert back to attract mode. Pressing "P2-START" again will again bring-up the splash screen showing the currently selected mission.

Lunar Lander does allow the player to change missions mid-stream in a game by pressing P2-START. When the mission is changed during gameplay, the mission splash screen is NOT displayed, however, the mission is changed. This is consistent with how original Lunar Lander functions in terms of allowing mid-stream mission changes.

Below are 4 screen shots of the Asteroids Multigame mission splash screen. In addition to showing the current mission, it also shows the characteristics of that particular mission. The missions are summarized in this table.

Mission Gravity Friction Rotation
Training Mission Light Gravity Friction From Atmosphere Controlled Rotation
Cadet Mission Moderate Gravity No Friction Controlled Rotation
Prime Mission Strong Gravity No Friction Controlled Rotation
Command Mission Moderate Gravity No Friction Rotational Momentum

Training
Training Mission

Light Gravity
Friction from Atmosphere
Controlled Rotation

Cadet
Cadet Mission

Moderate Gravity
No Friction
Controlled Rotation

Prime
Training Mission

Strong Gravity
No Friction
Controlled Rotation

Command
Command Mission

Moderate Gravity
No Friction
Rotational Momentum

Lunar Lander LEDS

talk about thrust here....

Lunar Lander Sounds

Original Lunar Lander had dedicated analog circuits to produce its sounds. On Asteroids and Asteroids Deluxe boards, those exact analog sounds do not exist. The Asteroids Multigame has attempted to produce sounds that are similar to the original Lunar Lander sounds while working within the limits of the Asteroids and Asteroids Deluxe hardware. The Asteroids Multigame sounds are NOT an exact match. The sounds a Lunar Lander game makes include various volume levels in thrust, a low fuel beep, and an explosion sound. Asteroids and Asteroids Deluxe have similar sounds which are substituted for the Lunar Lander sounds, as well the Asteroids Multigame uses the POKEY chip to assist in generating these sounds as well.

Lunar Lander External Thrust Controller

Currently the Asteroids Multigame does not support any type of external thrust controller. However, the hardware was designed in anticipation that some people might want to build a custom control panel which makes use of some type of (analog) thrust controller. The Asteroids Multigame has the ability to accept thrust inputs externally via an expansion header that can be added to the kit. Again, there is currently no hardware interface board to connect to the kit at this time and any such kit would require some minor software changes to be made to the Asteroids Multigame in order to support it and lots of testing.