Astro Chase

From C64-Wiki
Jump to navigationJump to search
Astro Chase
Title screen of the game
Title screen of the game
Game No. 526
Voting 6.50 points, 4 votes
Developer Dennis Kirsch, Mike Crick,
(Creator: Fernando Herrera)
Company First Star Software
Publisher First Star Software, Aackosoft, Statesoft
Musician Dennis Kirsch, Michael F.C. Crick
HVSC-File /GAMES/A-F/Astro_Chase.sid
Release 1984
Platform Arcade, Atari 400/800, Atari 5200, C64
Genre Shoot'em Up
Gamemode Single player
Operation Joystick
Media Datassette Diskette
Language Language:english



Description[edit | edit source]

The daring space pilot...
...and his spaceship

In the game "Astro Chase", the player pilots a spaceship through near-Earth space, disabling enemy nuclear warheads that are descending toward Earth and threatening to destroy the planet. Meanwhile, he must defend himself against enemy spaceships sent by the attacker to protect these "mega-mines".

During his mission, the player maneuvers his spaceship within a rectangular force field in which the enemy has enclosed Earth and several other planets. During his flight maneuvers, he must locate and destroy all the mines, avoiding collisions with celestial bodies and the edges of the force field, as these will deplete his limited energy reserves.


Backstory[edit | edit source]

In ancient times, in the 23rd century, the Megard Empire attempted to invade Earth. The Earth's defense system was able to repel the invaders at that time, virtually destroying their space fleet and forcing the few survivors to retreat. Faced with this humiliation, the Megardians swore deadly revenge — and now they are back!

Driven by centuries of pent-up hatred, they have enclosed our galaxy in an impenetrable force field and launched a surprise attack on Earth. They have placed mega-mines in the planet's gravitational field, which are slowly descending toward Earth, each carrying a nuclear warhead powerful enough to shatter the planet upon impact. Simultaneously, the Megardians are attacking Earth with their battle fleet to destroy any Earth-based spacecraft attempting to neutralize the mega-mines.


Design[edit | edit source]

The upper part of the screen depicts Earth and the surrounding galaxy in vibrant colors against a black background, although only a few different types of celestial bodies are shown. In particular, a planet modeled after Saturn with a ring system is very often seen in identical form, which makes the game board appear somewhat unimaginative in places.

The player-controlled spaceship is always in the center of the screen, while the game board scrolls pixel by pixel according to its movements. When the spaceship collides or explodes, the screen background flashes light gray. The bottom three lines of text display information about the game status.

After every fourth round (i.e., after successfully completing levels 4, 8, 12, ..., 32), a short interlude follows, during which the astronaut returns to Earth, reveals himself to the grateful population, and is cheered by them before embarking on new adventures (see the middle animation in the following gallery, and section "Solution").


With well-aimed shots, the space pilot destroys mega-mines and enemy spaceships...
...and celebrates his successes from time to time.
But woe betide anyone who fails to detect a mega-mine in time or fights it too late and crashes into Earth!



Graphics[edit | edit source]

The screen display is entirely in text mode (screen memory at address $0400) — the planets in multicolor text mode (character set starting at address $3800), the text lines with status information at the bottom of the screen in monochrome text mode (character set at address $1800, i.e., uppercase/lowercase letters in the C64's ROM). A separate multicolor character set exists for the airfield with the hangars and the launch pad for the spaceship (middle animation in the gallery above), starting at address $3000. The different character sets and graphics modes are switched between in the title screen via raster line interrupts in raster lines 0, 97, 178, 193, 219, 229, and 239, while in the actual game, the switches occur in raster lines 208, 211, 220, 229, 239, and 252.

The spaceships and their missiles are represented by monochrome sprites (sprites 0 and 1 for friendly lasers, sprites 2 and 3 for enemy lasers, sprite 4 for the friendly spaceship, and sprites 5–7 for the attackers). Interestingly, the sprites in the game are consistently stretched to twice their original size in the X direction, so that while their definitions require little memory, the horizontal resolution is 2 pixels instead of 1. To detect collisions between the spaceship and its adversaries, and to detect laser projectile hits, the game relies on the collision detection of the VIC (registers $D01E and $D01F).

All other graphical objects in the game are displayed using corresponding on-screen symbols. This also applies to the mega-mines, which can only move jerkily in increments of 8 pixels (or multiples thereof) towards Earth.

Sound[edit | edit source]

The game is accompanied throughout by a monophonic melody (see section "Theme"), which, although quieter during gameplay than in the intro, still becomes monotonous after a short time. Fortunately, the music can be turned off — in this case, it continues to play, but with waveform $00 and is therefore inaudible.

The second voice of the SID underscores the gameplay with gunfire and explosion sounds, while the third generates a short sound sequence when the shields are activated and a whistle whenever the spaceship recharges in the corners of the force field.

Hints[edit | edit source]

Mega Mine

The goal of "Astro Chase" is to protect Earth, located in the center of the game board, and to shoot down 16 Mega mines each round that are slowly advancing toward this planet and threatening to destroy it. The current round is successfully completed with the destruction of the 16th Mega mine. However, if even a single mine reaches Earth, the game ends.

Intercepting all Mega mines is therefore the top priority — defending against enemy spaceships only earns points, but does not contribute to the successful completion of the mission and thus serves only as self-defense.

Replenishing the energy supply should only be done when there is no danger to Earth — the initial supply of 1000 units is generous and depletes only slowly over time. It should be noted that collisions with planets also consume energy, as does firing missiles (1 unit per shot) and activating shields (100 units each).

The following objects are important on the playing field:

Moving the spaceship over the circular energy depots located at the corners of the force field gradually replenishes its energy supply. Since the spaceship is always in motion and cannot remain stationary over the depot, the fastest way to refuel is by quickly moving back and forth over the circular symbol. The number of energy units credited in this way depends on the direction in which the spaceship flies over the depot: 12 points for a horizontal pass, 24 points for a vertical pass.

Flying over the shield depots on the sides of the force field grants the spaceship a protective shield for a limited time (recognizable by the fact that the spaceship is no longer white, but flashes in color — see animation on the right). Thus armored, you can now eliminate your opponents by simply ramming them. However, this protection costs 100 energy units — and while it is activated, the energy supply cannot be replenished. The duration for which this shield remains active decreases with increasing level — from 12.75 seconds in round 1 to only 1.28 seconds in round 32.

Numerous large and small celestial bodies fill the galaxy and hinder the spaceship in its combat missions. Contrary to the laws of physics, the spaceship is not attracted to these objects, but rather rebounds after a collision, losing energy in the process. The smallest objects are particularly troublesome, as they are easily overlooked and then act like tripwires, impeding the pilot's progress.

The enemy aircraft used by the Megardians to protect the mega-mines can be divided into several groups, differing in their armament and maneuverability. All of the following enemies can destroy our astronaut by ramming; spaceships designated with the prefix "Fire-" are also equipped with a fire laser. Names ending in "-lon" indicate the ability to pass through planets, and those designated as "Jet" reach twice the speed of their counterparts without this suffix.

Shooting down these enemies (shown here consistently in yellow, also found in green and purple in the game) is rewarded with varying point values:



Ramatron (10 points)

Ramalon (20 points)

Ramatron Jet (30 points)

Ramalon Jet (40 points)

Firetron (50 points)

Firelon (60 points)

Firetron Jet (70 points)

Firelon Jet (80 points)



As expected, the better-equipped enemy spaceships tend to appear in the higher levels (Ramatrons in rounds 1, 3, and 7; Ramalons in rounds 2, 4, and 8; Ramatron Jets in rounds 9, 13, and 8). 17, Ramalon Jets in rounds 10, 14 and 18, Firetrons in rounds 5, 11 and 19, Firelons in rounds 6, 12 and 20, Firetron Jets in rounds 15, 21 and 23, and Firelon Jets in rounds 16, 22 and 24-32).

Destroying a Mega mine is rewarded with three times the points awarded for destroying an enemy spaceship: For example, if the Megardians attack with Firelon Jets, destroying one of these spaceships is worth 80 points, and each Mega-Mine destroyed in that round is worth 240 points.

The following animations illustrate the function of the described objects using typical scenes from the game:


The spaceship bounces back from both the edge of the force field and from planets.
Energy can be recharged at the circular charging stations in the corners of the force field.
A shield from the depots at the edge of the force field protects against collisions but prevents energy recharging.



Screen Layout[edit | edit source]

Typical scene from the game.

Controls[edit | edit source]

After the introductory sequence with the launch of the spaceship, pressing F5  selects the level in which the game should begin. Only the first 24 levels are selectable; higher levels (referred to in the game as "Chase") can only be reached by successfully completing combat missions. Pressing the F7  key then starts the game.

The S  key mutes the background music; pressing it again unmutes it. The RESTORE  key terminates the current game and returns to the title screen.

The spaceship is controlled exclusively with the joystick:

  • press fire buttonpress fire buttonJoystick leftJoystick right A simple movement of the joystick steers the spaceship in the corresponding direction. It maintains this direction even if the joystick temporarily returns to its resting position.
  • ​​press fire button + press fire buttonpress fire buttonJoystick leftJoystick right In combination with the fire button, a joystick movement determines the direction in which a projectile is to be fired from the blaster cannon. If the fire button is held down during this process, the spaceship's movement remains unaffected. Two projectiles can be fired in quick succession.

Tips[edit | edit source]

  • When patrolling within the force field that seals off Earth and near-Earth space, one should never stray too far from home for too long, lest one accidentally miss an approaching mega-mine — even though it is, of course, very tempting to replenish one's energy reserves at one of the corners of the force field!
  • Enemy spaceships that cannot pass through a planet can be temporarily blocked by strategically choosing a location that places a celestial body between the player and the attacker.


Solution[edit | edit source]

The sole objective of "Astro Chase" is to withstand the attack of the enemy Megardians for as long as possible and thereby score as many points as possible. There is no "solution" to the game, such as the complete annihilation of the invaders or even a repulsion of the attackers: After each successful completion of all 32 rounds (not 34, as stated in the instructions), the player simply returns to round 1 — therefore, they cannot rest on their laurels but must repeatedly take up arms against the enemy.


After only 4 rounds (and 64 defused nuclear warheads), you haven't yet earned any honors...
...but after 24 rounds (and 384 mines), things can be a bit more pompous...
...unless the state limousine drives off right in front of the space hero!



Map[edit | edit source]

The star map of "Astro Chase" is randomly generated anew each round. The following illustration therefore only shows an example of the size and layout of the game board. The yellow shield and energy depots, which define the force field within which the player can move their spaceship, are clearly visible.


Cheats[edit | edit source]

The CSDb contains two Cracks, each with 4 selectable Trainer functions:


Tankard Trainer
Karmody Trainer



With the Crack of Tankard (left animation), the intro should not be skipped, otherwise the display of the spaceship during the honors after every fourth round will be incorrect. Furthermore, this crack occasionally freezes after exiting the Cracktro using the spacebar. The reason for this is that it (presumably unintentionally, in the following code section at address $0997) sets all bits in the VIC interrupt mask. Pressing the spacebar pulls the VIC's input pin LP to a low level, triggering a lightpen interrupt that is not acknowledged in the kernel's IRQ routine, causing this routine to be executed repeatedly:

0983: SEI         ; Deactivate interrupts
0984: LDA #$07    ; Move VIC memory segment to address $0000...$3FFF verlegen
0986: STA $DD00   ; by writing to CIA2 data register A
0989: LDA #$37    ; Enable I/O area and all ROMs
098B: STA *$01    ; by writing to the CPU port
098D: LDX #$17    ; Fill 24 registers of the SID...
098F: LDA #$00    ; ... with null bytes ...
0991: STA $D400,X ; ... and thereby switch of the sound
0994: DEX         ; Decrease write index
0995: BPL $0991   ; Jump backwards if no underflow yet
0997: STX $D01A   ; Otherwise use X register (containing the value $FF) as the VIC's IRQ mask, thereby enabling all VIC interrupts
099A: LDA #$81    ; For CIA1, only enable interrupts caused by timer A
099C: STA $DC0D
099F: ASL $D019   ; Clear all existing VIC interrupt requests
09A2: CLI         ; Reactivate interrupts

However, when running the Tankard crack with the C64 emulator VICE, the intro doesn't freeze completely but only pauses for a few minutes. This is due to a bug in VICE, which was found in random tests of all VICE versions from the last 20 years. This bug is documented as a ticket #2052 in the SourceForge bug tracker and was fixed on August 17, 2024, in the Pre-Release r45310.

When using the Crack by Karmody, please note that the last option, "INVULNERABLE EARTH", can cause a Mega mine to become ineffective and stuck in the ground, making it impossible to exit the game.

As an alternative to the two trainers in CSDb, a crack can be loaded in which the game's program code is not compressed and encrypted, and this code can be specifically modified before starting using POKE commands. Since the program code is copied after loading before the game starts, such POKEs depend on the crack used; for example, the following list for the version of Terrestrial Breakin' Company provides a number of interesting trainer functionalities that can be used independently:

POKE 3165,7   : REM 7 SPACESHIPS INSTEAD OF ONLY 3 AT THE START OF THE GAME
POKE 3172,2   : REM ONLY 2 MEGA MINES PER ROUND INSTEAD OF 16
POKE 5161,165 : REM ENDLESS SPACESHIPS
POKE 5858,0   : REM INFINITE ENERGY
POKE 15739,0  : REM DO NOT DEACTIVATE THE PROTECTIVE SHIELD AGAIN
POKE 4154,0   : REM FLIGHT THROUGH PLANETS POSSIBLE
POKE 9524,34  : REM UNLOCKING LEVELS BEYOND 32
POKE 2941,177 : REM EMPTY SPACE WITHOUT PLANETS
POKE 4691,0 : POKE 6281,0 : REM IMMUNE TO ENEMY SPACESHIPS

Internal Data Structures[edit | edit source]

For developing custom trainer functions and for analyzing or manipulating the data used by the game, knowledge of memory allocation and internal workings is helpful. The following table therefore compiles a range of information about "Astro Chase".

Address Content Comments
$0026 Number of remaining spaceships Correctly displayed on screen up to a maximum of 99 spaceships
$0027-$0028 Starting value of the active shield timer Least-significant byte first, (648 — 12 × level) in levels 1...24, (356 — 24 × (level — 24)) in levels 25...32
$007A — $007B Active shield timer Least-significant byte first, range 636...0, counted down every 20 ms (via raster interrupt)
$007C Number of remaining mega-mines Range 0...16
$0087 Current level, max. 24 Range 1...24
$0088 Current level Range 1...32
$00DA — $00DB Address of the top left character in the Buffer Least-significant byte first, at least $5800
$00DC — $00DD Address of the top-left character in screen memory Least-significant byte first, always $0400
$0750-$0755 Energy Decimal number (ASCII) in screen memory

The game world is stored internally as a 128 × 72 character map in a buffer at address $5C00...$7FFF. At the beginning of each level, the program clears this memory area (fills it with null bytes) and then randomly draws the celestial bodies of the galaxy. During the game, the scrolling routine always starts from the address of the character in this map that should be visible in the top-left corner of the screen and copies the contents of a total of 19 screen lines into screen memory. The source and destination addresses of this copy operation are first initialized from the pointers to $00DA...$00DD (see table above) and then incremented line by line in the code by self-modification (the source addresses by 128 bytes each, the destination addresses by 40 bytes each):

2BA2: LDA *$DA    ; Copy low byte of the source address in the buffer
2BA4: STA $2BBB   ; into the code of the scoll routine
2BA7: LDA *$DB    ; Copy high byte of the source address in the buffer
2BA9: STA $2BBC   ; into the code of the scoll routine
2BAC: LDA *$DC    ; Copy low byte of the target address in screen memory
2BAE: STA $2BBE   ; into the code of the scoll routine
2BB1: LDA *$DD    ; Copy high byte of the target address in screen memory
2BB3: STA $2BBF   ; into the code of the scoll routine
2BB6: LDY #$15    ; Copy 21 lines in total
2BB8: LDX #$26    ; Copy 39 characters per line (in 38 column mode)
2BBA: LDA $6934,X ; Retrieve character from buffer at source address 
2BBD: STA $0400,X ; Write character to destination address in screen buffer
2BC0: DEX         ; Decrement character counter
2BC1: BPL $2BBA   ; Jump backwards if not entire line copied
2BC3: CLC         ; Prepare for addition
2BC4: LDA $2BBB   ; Retrieve low byte of source address
2BC7: ADC #$80    ; add line length (128 bytes) of buffer
2BC9: STA $2BBB   ; and write back
2BCC: BCC $2BD2   ; Jump unless overflow has occurred
2BCE: INC $2BBC   ; otherwise increase high byte of the source address
2BD1: CLC         ; Prepare for addition
2BD2: LDA $2BBE   ; Retrieve low byte of destination address
2BD5: ADC #$28    ; add line length (40 bytes) of screen
2BD7: STA $2BBE   ; and write back
2BDA: BCC $2BDF   ; Jump unless overflow has occurred
2BDC: INC $2BBF   ; otherwise increase high byte of the destination address
2BDF: DEY         ; Decrease line counter
2BE0: BNE $2BB8   ; Jump backwards if 19 lines have not yet been copied
2BE2: RTS         ; Return from subroutine

The blinking of the mega mines is implemented by periodically modifying (bitwise inverting) the definition of the corresponding character $5B in the character set:

4258: LDX #$07    ; The character definition of the Mega mine consists of 8 bytes (0...7)
425A: LDA $3AD8,X ; Read character definition bytewise from address ($3800 + $5B × 8)
425D: EOR #$FF    ; bitwise invert
425F: STA $3AD8,X ; and write back
4262: DEX         ; Decrease byte counter
4263: BPL $425A   ; Jump backwards if no underflow yet (not yet 8 bytes)
4265: RTS         ; Return from subroutine

Votes[edit | edit source]

Voting of the C64-Wiki users (10=the best vote):
6.50 points at 4 votes (rank 702).
You need to be logged in to cast a vote.
C64 Games 6 December 5, 2025 - "gut" - 19886 downs
Lemon 64 6,4 December 5, 2025 - 40 votes
Home Computing Weekly 5/5 (Instructions 100%, Ease of use 85%, Graphics 85%, Value for money 85%) Issue 80 (September 18-24, 1984)
Personal Computer Games 6/10 (Graphics 8/10, Sound 7/10, Originality 4/10, Lasting interest 6/10) Issue 12 (November 1984)
Your Commodore 3/5 Issue 3 (December 1984)
TV Gamer Value 4/5, Graphics 4/5, Sound 4.5/5, Gameplay 4/5 November 1984
Universal Videogame List 3.8/5 June 18, 2024
Atarimania 6.6/10 June 18, 2024 - 55 votes
Rombach 8 September 1984 - "Verdict 2"


Critics[edit | edit source]

Stephan64: "Anyone simply looking for a pretty shooter and willing to overlook a ludicrous backstory and the consistent disregard for the laws of physics will be well served by 'Astro Chase'. Apparently, the game's creators didn't take themselves too seriously either — how else can one interpret the instruction manual's warning that the impact of a mega-mine means not only the end of planet Earth but also the end of the game? 6 points for an entertaining pastime, which, however, becomes significantly too difficult in the higher levels."

Rombachs C64-Spieleführer: "A rather fun and, at higher levels, quite challenging game for those who like to keep their finger on the red button. (Verdict 2)." [1]

Miscellaneous[edit | edit source]

Cover[edit | edit source]

Cassette cover
Cassette cover

Inlay[edit | edit source]

Cassette inlay
Cassette inlay

Cassette[edit | edit source]

Cassette
Cassette

Theme[edit | edit source]

A monophonic accompaniment melody (Tchaikovsky's "1812 Overture", according to the manual) plays continuously throughout the game. A short musical sequence also sounds when the shield is activated. The following gallery shows these musical pieces in standard notation. For creative use, the sheet music is also available as a PDF document (File:AstroChase Theme PDF.pdf) and in ABC musical notation (File:AstroChase Theme.abc.txt).


Musical notes of the accompaniment melody, reconstructed by logging all write accesses to the SID
Melody when the shields are activated



Fastloader[edit | edit source]

The cassette version of Astro Chase uses an integrated software fast loader, which is automatically activated during loading and speeds up the loading process by a factor of approximately 4.5. This fast loader is stored in encrypted form in the header of the program stored on the cassette, meaning it is transferred to the cassette buffer as soon as the filename is found. The program itself is just a short routine that then decrypts and executes this fast loader. Furthermore, this program is responsible for destroying the fast loader after it has finished, so that a subsequent reading of the cassette buffer does not reveal its operation. During the loading process, the screen usually displays a horizontal striped pattern; The loading screen shown below is also displayed intermittently.

The fast loader is capable of loading up to 256 individual program segments sequentially. Each such segment is preceded by a 4-byte data structure containing the start and end addresses of the subsequent data block. Thanks to optimized encoding (shorter intervals for 0 and 1 bits, no parity bit or byte, and no duplicate storage of program data), loading "Astro Chase" takes approximately two minutes, whereas the KERNAL's data cassette routines would take almost nine minutes for a file of this size.

Almost as interesting as the fast loader is the routine that decodes it before use. To obscure its exact workings, this decoder uses a large number of illegal opcodes (mostly NOPs) and therefore, when disassembled, initially appears more like a random block of data than executable code. This program segment is loaded into the memory area $02A7...$030B and overwrites two BASIC vectors there, causing it to start immediately after loading.

The same fast loader is also used in the cartridge versions of the games Aztec, Bristles, and Starquake. The game manual includes the note "Burner 'FASTLOAD' (C) 1984 D. Turner/Dream Software."


Loading screen of the cassette version




Video Recording[edit | edit source]


Successful rescue of Earth (Levels 23 and 24)

Trivia[edit | edit source]

After loading the cassette version of Astro Chase, the string "NO HACKING!!!" can be found in the memory area at address $0E0C — $0E19. Given the numerous cracks available on the internet, the effectiveness of this warning is questionable.

Highscore[edit | edit source]

The following list invites you to immortalize yourself with your highest score. Ranking is based solely on the score achieved. The completed round (chase) may be included as a level, but — because entry is possible at any of the first 24 levels — it does not affect the ranking.

Topscore of Rockford
Topscore of Rockford
  1. Rockford - 14.596 - 7 (12.08.2024)
  2. Ivanpaduano - 8.226 - 4 (04.08.2024)
  3. Stephan64 - 1.950 - 2 (25.06.2024)


#2 Ivanpaduano #3 Stephan64
#2 Ivanpaduano #3 Stephan64


Links[edit | edit source]

Chase Wikipedia: Astro Chase
Manual
Magazines

Sources[edit | edit source]

  1. Oswald Reim, Martin Scholer: "Rombachs C64-Spieleführer", Rombach, 1984, page 24