Astro Chase

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Astro Chase
Titelbild des Spiels
Spiel Nr. 1274
Bewertung 6.00 Punkte bei 1 Stimmen
Entwickler Dennis Kirsch, Mike Crick,
(Creator: Fernando Herrera)
Firma First Star Software
Verleger First Star Software, Aackosoft, Statesoft
Musiker Dennis Kirsch, Michael F.C. Crick
HVSC-Datei /GAMES/A-F/Astro_Chase.sid
Release 1984
Plattform(en) Arcade, Atari 400/800, Atari 5200, C64
Genre Shoot'em Up
Spielmodi Einzelspieler
Steuerung Icon Port2.pngIcon joystick.png
Medien Icon kassette.png Icon disk525.png
Sprache Sprache:englisch



Beschreibung[Bearbeiten | Quelltext bearbeiten]

Der tollkühne Weltraumpilot...
... und sein Raumschiff

Im Spiel "Astro Chase" (zu deutsch: "Weltraumjagd") steuert der Spieler ein Raumschiff durch den erdnahen Weltraum und deaktiviert feindliche, atomare Sprengsätze, die in Richtung Erde sinken und den Planeten zu vernichten drohen. Währenddessen muss er sich gegen gegnerische Raumschiffe wehren, die der Angreifer zum Schutz dieser "Mega-Minen" entsandt hat.

Während seiner Mission bewegt der Spieler sein Raumschiff innerhalb eines rechteckigen Kraftfelds, in das die Gegner die Erde und eine Reihe weiterer Planeten eingeschlossen haben. Während seiner Flugmanöver muss er nacheinander alle Minen aufspüren und abschießen, hierbei jedoch Kollisionen mit Himmelskörpern und den Rändern des Kraftfelds vermeiden, da diese ihn einen Teil seiner begrenzen Energievorräte kosten.



Die Geschichte

In uralten Zeiten, im 23. Jahrhundert, hatte das Megard-Imperium versucht, die Erde anzugreifen. Das irdische Verteidigungssystem konnte die Invasoren aber damals zurückschlagen, ihre Raumflotte so gut wie vernichten und die wenigen Überlebenden zum Rückzug zwingen. Angesichts dieser Schmach schworen die Megardianer tödliche Rache — und nun sind sie zurück!

Getrieben von ihrem über Jahrhunderte genährten Hass haben sie unsere Galaxie in ein undurchdringliches Kraftfeld eingeschlossen und einen Überraschungsangriff auf die Erde gestartet. Im Schwerefeld des Planeten haben sie Mega-Minen platziert, die langsam in Richtung Erde sinken und von denen jede einzelne einen atomaren Sprengsatz trägt, der ausreicht, um beim Einschlag die Erde in Stücke zu reißen. Parallel dazu greifen die Megardianer mit ihrer Kampfflotte die Erde an, um alle irdischen Raumschiffe zu vernichten, die versuchen sollten, die Mega-Minen zu neutralisieren.


Gestaltung[Bearbeiten | Quelltext bearbeiten]

Im oberen Teil des Bildschirms werden die Erde und der sie umgebende Teil der Galaxie farbenfroh auf schwarzem Hintergrund dargestellt, wobei allerdings nur wenige verschiedene Arten von Himmelskörpern existieren. Insbesondere ein dem Saturn nachempfundener Planet mit Ringsystem ist dadurch sehr oft in identischer Form zu sehen, was den Spielplan stellenweise etwas phantasielos wirken lässt.

Das vom Spieler gesteuerte Raumschiff befindet sich stets in der Bildschirmmitte, während der Spielplan seinen Bewegungen entsprechend pixelweise gescrollt wird. Bei Kollisionen und Explosionen dieses Raumschiffs blitzt der Bildschirmhintergrund hellgrau auf. In den untersten drei Textzeilen sind Informationen zum Spielstand zu finden.

Nach jeder vierten Runde (also nach einem erfolgreichen Abschluss von Level 4, 8, 12, ..., 32) folgt ein kurzer Einschub, während dessen der Astronaut zur Erde zurückkehrt, sich der dankbaren Erdbevölkerung zeigt und sich von ihr bejubeln lässt, bevor er zu neuen Abenteuern aufbricht (siehe mittlere Animation der nachfolgenden Galerie, und Abschnitt "Lösung").


Mit wohlgezielten Schüssen vernichtet der Weltraumpilot Mega-Minen und feindliche Raumschiffe...
... und lässt seine Erfolge von Zeit zu Zeit gebührend feiern.
Doch wehe, wenn eine nicht rechtzeitig entdeckte oder zu spät bekämpfte Mega-Mine auf der Erde einschlägt!



Grafik[Bearbeiten | Quelltext bearbeiten]

Die Bildschirmdarstellung erfolgt durchweg im Textmodus (Bildschirmspeicher an Adresse $0400) — die Planeten im Multicolor-Textmodus (Zeichensatz ab Adresse $3800), die Textzeilen mit den Statusinformationen am unteren Bildschirmrand im Monocolor-Textmodus (Zeichensatz an Adresse $1800, also Groß-/Kleinbuchstaben im ROM des C64). Für den Flugplatz mit den Hangars und der Startrampe für das Raumschiff (mittlere Animation der obigen Galerie) existiert ein eigener Multicolor-Zeichensatz ab Adresse $3000. Zwischen den verschiedenen Zeichensätzen und Graphikmodi wird im Titelbild per Rasterzeileninterrupt in den Rasterzeilen 0, 97, 178, 193, 219, 229 und 239 umgeschaltet, im eigentlichen Spiel in den Rasterzeilen 208, 211, 220, 229, 239 und 252.

Die Raumschiffe und ihre Geschosse werden durch Monocolor-Sprites dargestellt (Sprite 0 und 1 für eigene, Sprite 2 und 3 für gegnerische Laser, Sprite 4 für das eigene Raumschiff und Sprite 5—7 für die Angreifer). Interessanterweise sind die Sprites im Spiel durchweg in X-Richtung auf die doppelte Größe gestreckt, so dass ihre Definitionen zwar wenig Speicherplatz benötigen, die Auflösung in horizontaler Richtung jedoch 2 statt 1 Pixel beträgt. Für die Erkennung von Zusammenstößen zwischen dem Raumschiff und seinen Widersachern und von Treffern der Laser-Geschosse verlässt sich das Spiel auf die Kollisionserkennung des VIC (Register $D01E und $D01F).

Alle weiteren grafischen Objekte des Spiels werden mittels entsprechende Bildschirmzeichen angezeigt. Insbesondere gilt dies auch für die Mega-Minen, die sich dadurch nur ruckartig in Schritten von 8 Pixeln (oder einem Vielfachen davon) in Richtung Erde bewegen können.

Sound[Bearbeiten | Quelltext bearbeiten]

Das Spiel wird durchgehend von einer einstimmigen Melodie begleitet (siehe Abschnitt "Theme"), die während des Spiels zwar leiser erklingt als im Intro, dennoch aber schon nach kurzer Zeit eintönig wirkt. Glücklicherweise lässt sich die Musik abschalten — sie wird in diesem Fall zwar weiterhin abgespielt, allerdings mit Wellenform $00 und damit unhörbar.

Die zweite Stimme des SID untermalt das Spielgeschehen mit Schuss- und Explosionsgeräuschen, die dritte generiert eine kurze Tonsequenz beim Aktivieren der Schutzschilde sowie einen Pfeifton, sobald das Raumschiff in den Ecken des Kraftfelds neue Energie aufnimmt.

Hinweise[Bearbeiten | Quelltext bearbeiten]

Mega-Mine

Das Ziel von "Astro Chase" ist es, die im Zentrum des Spielplans befindliche Erde zu bewachen und in jeder Runde 16 Mega-Minen, die sich langsam in Richtung dieses Planeten bewegen und ihn zu zerstören drohen, abzuschießen. Jeweils mit der Vernichtung der 16. Mega-Mine ist die aktuelle Runde erfolgreich abgeschlossen. Erreicht dagegen auch nur eine einzige Mine die Erde, so ist das Spiel zu Ende.

Dem Abfangen aller Mega-Minen ist dementsprechend alles andere unterzuordnen — die Abwehr feindlicher Raumschiffe bringt demgegenüber lediglich Punkte, leistet aber keinen Beitrag zum erfolgreichen Abschluss der Mission und dient damit nur der Selbstverteidigung.

Auch das Auffüllen des Energievorrats sollte nur erfolgen, wenn keine Gefahr für die Erde besteht — der anfängliche Vorrat von 1000 Einheiten ist großzügig bemessen und schwindet nur langsam im Lauf der Zeit. Zu beachten ist allenfalls, dass auch Zusammenstöße mit Planeten Energie kosten, wie auch das Abfeuern von Geschossen (1 Einheit pro Schuss) und das Aktivieren der Schutzschilde (jeweils 100 Einheiten).

Auf dem Spielfeld sind die folgenden Objekte von Bedeutung:

AstroChase Energiedepot.gif

Bewegt man das Raumschiff über die kreisförmigen Energie-Depots, die sich an den Ecken des Kraftfelds befinden, so wird der eigene Energievorrat nach und nach aufgefüllt. Da das Raumschiff stets in Bewegung ist und nicht über dem Depot stillstehen kann, tankt man am schnellsten mit einer raschen Hin- und Herbewegung über dem Kreis-Symbol. DIe Zahl der auf diese Weise gutgeschriebenen Energie-Einheiten hängt von der Richtung ab, in der das Raumschiff das Depot überfliegt: 12 Punkte bei einem horizontalen, 24 Punkte bei einem vertikalen Überflug.

AstroChase Schilddepot.gif
AstroChase Schutzschild.gif

Fliegt man über die Schild-Depots an den Seiten des Kraftfelds, so erhält das eigene Raumschiff für eine begrenze Zeit einen Schutzschild (erkennbar daran, dass das Raumschiff nun nicht mehr weiß ist, sondern farbig blinkt — siehe Animation rechts). So gepanzert, kann man nun seine Gegner durch einfaches Rammen ausschalten. Allerdings kostet dieser Schutz 100 Energieeinheiten — und während er aktiviert ist, kann der Energievorrat nicht aufgefüllt werden. Die Zeitspanne, für die dieser Schutzschild aktiv bleibt, ist umso kürzer, je höher das Level ist — von 12,75 Sekunden in Runde 1 bis nur noch 1,28 Sekunden in Runde 32.

AstroChase Planeten.gif

Zahlreiche große und kleine Himmelskörper füllen die Galaxie und behindern das Raumschiff bei seinen Kampfeinsätzen. Entgegen den Gesetzen der Physik wird das Raumschiff von diesen allerdings nicht etwa angezogen, sondern prallt nach einer Kollision zurück und verliert hierbei Energie. Ausgesprochen störend sind insbesondere die kleinsten Objekte, die leicht übersehen werden und den Piloten dann wie Fußangeln am Fortkommen hindern.

Die gegnerischen Flugobjekte, die die Megardianer zum Schutz der Mega-Minen einsetzen, lassen sich in eine Reihe von Gruppen einteilen, die sich bezüglich ihrer Bewaffnung und ihrer Manövrierfähigkeit unterscheiden. So können alle nachfolgend dargestellten Gegner unseren Astronauten durch Rammen vernichten; die mit der Vorsilbe "Fire-" bezeichneten Raumschiffe verfügen aber zusätzlich über einen Feuerlaser. Auf "-lon" endende Benennungen deuten zudem auf die Fähigkeit hin, durch Planeten hindurchzufliegen, und die als "Jet" bezeichneten Objekte erreichen eine doppelt so hohe Geschwindigkeit wie ihr Pendant ohne diesen Namenszusatz.

Ein Abschuss dieser Gegner (hier durchweg gelb dargestellt, im Spiel auch in grüner und purpurner Farbe anzutreffen) wird dementsprechend mit unterschiedlich hohen Punktzahlen honoriert:


AstroChase Ramatron.gif

Ramatron
(10 Punkte)
AstroChase Ramalon.gif

Ramalon
(20 Punkte)
AstroChase RamatronJet.gif

Ramatron Jet
(30 Punkte)
AstroChase RamalonJet.gif

Ramalon Jet
(40 Punkte)
AstroChase Firetron.gif

Firetron
(50 Punkte)
AstroChase Firelon.gif

Firelon
(60 Punkte)
AstroChase FiretronJet.gif

Firetron Jet
(70 Punkte)
AstroChase FirelonJet.gif

Firelon Jet
(80 Punkte)



Wie zu erwarten, treten die die besser ausgestatteten gegnerischen Raumschiffe eher in den höheren Levels auf (Ramatrons in Runde 1, 3 und 7, Ramalons in Runde 2, 4 und 8, Ramatron Jets in Runde 9, 13 und 17, Ramalon Jets in Runde 10, 14 und 18, Firetrons in Runde 5, 11 und 19, Firelons in Runde 6, 12 und 20, Firetron Jets in Runde 15, 21 und 23, und Firelon Jets in Runde 16, 22 und 24—32).

Der Vernichtung einer Mega-Mine wird mit dem Dreifachen dessen belohnt, was es für ein feindliches Raumschiff gibt: Greifen die Megardianer also beispielsweise mit Firelon-Jets an, so gibt es für den Abschuss eines solchen Raumschiffs 80 Punkte, und für jede Mega-Mine in der betreffenden Runde 240 Punkte.

Die folgenden Animationen illustrieren die Funktion der beschriebenen Objekte anhand von typischen Szenen aus dem Spiel:


Sowohl vom Rand des Kraftfelds als auch von Planeten prallt das Raumschiff zurück
An den kreisförmigen Ladestationen in den Ecken des Kraftfelds lässt sich Energie tanken
Ein Schild aus den Depots am Rand des Kraftfelds schützt vor Kollisionen, verhindert allerdings das Aufladen von Energie



Bildschirmaufbau[Bearbeiten | Quelltext bearbeiten]

Typische Szene aus dem Spiel

Bedienung[Bearbeiten | Quelltext bearbeiten]

Nach der einleitenden Sequenz mit dem Start des Raumschiffs kann man durch Betätigen der Taste F5  festlegen, in welchem Level das Spiel beginnen soll. Wählbar sind nur die ersten 24 Levels, höhere Spielstufen (im Spiel als "Chase", zu deutsch "Jagd", bezeichnet) sind nur durch erfolgreiche Kampfeinsätze erreichbar. Ein Druck auf die Taste F7  startet dann das Spiel.

Mit der Taste S  lässt sich die Begleitmelodie stummschalten; ein weiterer Druck auf diese Taste macht sie wieder hörbar. Die RESTORE -Taste bewirkt den Abbruch des laufenden Spiels und eine Rückkehr in den Titelbildschirm.

Die Steuerung des Raumschiffs findet ausschließlich mit dem Joystick statt:

  • Joystick nach vorneJoystick zurückJoystick nach linksJoystick nach rechts Eine einfache Auslenkung des Joysticks steuert das Raumschiff in die entsprechende Richtung. Diese Richtung behält es auch bei, wenn der Joystick zwischenzeitlich in die Ruheposition zurückkehrt.
  • Feuerknopf drücken + Joystick nach vorneJoystick zurückJoystick nach linksJoystick nach rechts In Kombination mit dem Feuerknopf gibt eine Joystickbewegung die Richtung vor, in die ein Geschoss aus der Lasterkanone abgefeuert werden soll. Hält man während dieses Vorgangs die ganze Zeit den Feuerknopf gedrückt, so bleibt die Bewegung des Raumschiffs hiervon unbeeinflusst. Immer zwei Geschosse können kurz nacheinander abgefeuert werden.

Tipps[Bearbeiten | Quelltext bearbeiten]

  • Bei der Patrouille innerhalb des Kraftfelds, das die Erde und den erdnahen Weltraum abriegelt, sollte man sich keinesfalls zu lange vom Heimatplaneten entfernen, um nicht versehentlich eine herannahende Mega-Mine zu übersehen — auch wenn es natürlich sehr verlockend ist, an einer der Ecken des Kraftfelds einmal großzügig Energie zu tanken!
  • Diejenigen gegnerischen Raumschiffe, die nicht durch einen Planeten hindurchfliegen können, lassen sich zeitweilig blockieren, indem man durch geeignete Wahl seines Aufenthaltsorts einen Himmelskörper zwischen sich und den Angreifer bringt.


Lösung[Bearbeiten | Quelltext bearbeiten]

Das Ziel von "Astro Chase" besteht ausschließlich darin, dem Angriff der feindlichen Megardianer möglichst lange standzuhalten und auf diese Weise möglichst viele Punkte einzuheimsen. Eine "Lösung" des Spiels, beispielsweise eine vollständige Vernichtung der Invasoren oder zumindest ein Zurückschlagen der Angreifer, ist nicht vorgesehen: Nach jedem erfolgreichen Abschluss aller 32 Runden (nicht 34, wie in der Anleitung behauptet) findet sich der Spieler einfach in Runde 1 wieder — kann sich also nicht etwa auf seinen Lorbeeren ausruhen, sondern muss wieder und wieder gegen die Feinde zu Felde ziehen.


Nach nur 4 Runden (und 64 entschärften atomaren Sprengsätzen) hat man sich noch keine Ehrung verdient ...
... aber nach 24 Runden (und 384 Minen) darf es schon etwas pompöser sein ...
... es sei denn, die Staatskarosse fährt dem Weltraumhelden vor der Nase weg!



Karte

Die Sternenkarte von "Astro Chase" wird in jeder Runde neu in zufälliger Weise erzeugt. Die folgende Illustration zeigt daher nur beispielhaft die Ausdehnung und den Aufbau des Spielplans. Deutlich zu erkennen sind die gelben Schild- und Energie-Depots, die das Kraftfeld begrenzen, innerhalb dessen sich der Spieler mit seinem Raumschiff bewegen kann.

AstroChase Map.png


Cheats[Bearbeiten | Quelltext bearbeiten]

In der CSDb gibt es zwei Cracks mit jeweils 4 wählbaren Trainerfunktionen:


Trainer von Tankard
Trainer von Karmody



Beim Crack von Tankard (linke Animation) sollte das Intro nicht übersprungen werden, da ansonsten die Darstellung des Raumschiffs bei den Ehrungen nach jeder vierten Runde fehlerhaft ist. Zudem hängt sich dieser Crack sporadisch auf, nachdem man mit der Leertaste das Cracktro verlassen hat. Der Grund dafür liegt darin, dass dieses (vermutlich unbeabsichtigt, im nachfolgenden Codeabschnitt an Adresse $0997) alle Bits in der Interruptmaske des VIC setzt. Der Druck auf die Leertaste zieht den Eingangspin LP des VIC auf Low-Pegel und löst daraufhin einen Lightpen-Interrupt aus, der in der IRQ-Routine des Kernals nicht quittiert wird, so dass diese Routine wieder und wieder angesprungen wird:

0983: SEI         ; Interrupts verbieten
0984: LDA #$07    ; VIC-Speichersegment an Adresse $0000...$3FFF verlegen
0986: STA $DD00   ; durch Schreiben in CIA2 Datenregister A
0989: LDA #$37    ; I/O-Bereich und alle ROMs einschalten
098B: STA *$01    ; durch Schreiben auf Prozessorport
098D: LDX #$17    ; 24 Register des SID...
098F: LDA #$00    ; ... mit Nullbytes...
0991: STA $D400,X ; ... beschreiben und damit Sound ausschalten
0994: DEX         ; Schreibindex vermindern
0995: BPL $0991   ; Rücksprung falls noch kein Unterlauf
0997: STX $D01A   ; Sonst X-Register (mit Wert $FF) als IRQ-Maske des VIC setzen und damit alle VIC-Interrupts zulassen
099A: LDA #$81    ; CIA1 nur Interrupts durch Timer A zulassen
099C: STA $DC0D
099F: ASL $D019   ; Alle bestehenden Interruptanforderungen des VIC löschen
09A2: CLI         ; Interrupts wieder zulassen

Führt man den Crack von Tankard allerdings mit dem C64-Emulator VICE aus, so hängt sich das Intro nicht komplett auf, sondern pausiert nur einige Minuten. Grund hierfür ist ein Bug in VICE, der bei stichprobenartigen Tests in allen VICE-Versionen der letzten 20 Jahre zu finden war. Dieser ist als Ticket #2052 im SourceForge-Bugtracker dokumentiert und wurde am 17.08.2024 im Pre-Release r45310 behoben.

Beim Crack von Karmody ist zu beachten, dass die letzte Option "INVULNERABLE EARTH" dazu führen kann, dass eine Mega-Mine wirkungslos inmitten der Erde steckenbleibt und das Spiel anschließend nicht mehr beendet werden kann.

Alternativ zu den beiden Trainern in der CSDb lässt sich ein Crack laden, bei dem der Programmcode des Spiels nicht komprimiert und verschlüsselt ist, und dieser vor dem Starten mit Hilfe von POKE-Befehlen gezielt modifizieren. Da der Programmcode nach dem Laden jeweils noch umkopiert wird, bevor das Spiel beginnt, sind derartige POKEs abhängig vom verwendeten Crack; für die Version von Terrestrial Breakin' Company bietet die folgende Liste beispielsweise eine Reihe interessanter Trainerfunktionalitäten, die unabhängig voneinander eingesetzt werden können:

POKE 3165,7   : REM 7 STATT NUR 3 RAUMSCHIFFE BEI SPIELBEGINN
POKE 3172,2   : REM NUR 2 STATT 16 MEGA-MINEN PRO RUNDE
POKE 5161,165 : REM UNENDLICH VIELE RAUMSCHIFFE
POKE 5858,0   : REM UNENDLICH VIEL ENERGIE
POKE 15739,0  : REM SCHUTZSCHILD NICHT WIEDER DEAKTIVIEREN
POKE 4154,0   : REM FLUG DURCH PLANETEN MOEGLICH
POKE 9524,34  : REM LEVELS UEBER 32 HINAUS FREISCHALTEN
POKE 2941,177 : REM LEERER WELTRAUM OHNE PLANETEN
POKE 4691,0 : POKE 6281,0 : REM IMMUN GEGEN GEGNERISCHE RAUMSCHIFFE

Interne Datenstrukturen[Bearbeiten | Quelltext bearbeiten]

Für die Entwicklung eigener Trainerfunktionen und für die Analyse oder Manipulation der vom Spiel genutzten Daten sind Kenntnisse der Speicherbelegung und der internen Arbeitsweise hilfreich. Die folgende Tabelle stellt daher eine Reihe von Informationen über "Astro Chase" zusammen.

Adresse Inhalt Bemerkungen
$0026 Anzahl verbleibender Raumschiffe Korrekt am Bildschirm angezeigt bis maximal 99 Raumschiffe
$0027-$0028 Startwert des Timers für aktiven Schutzschild Niederwertiges Byte zuerst, (648 — 12 × Level) in Level 1...24, (356 — 24 × (Level — 24)) in Level 25...32
$007A—$007B Timer für aktiven Schutzschild Niederwertiges Byte zuerst, Wertebereich 636...0, heruntergezählt alle 20 ms (per Rasterinterrupt)
$007C Anzahl verbleibender Mega-Minen Wertebereich 0...16
$0087 Aktuelles Level, max. 24 Wertebereich 1...24
$0088 Aktuelles Level Wertebereich 1...32
$00DA—$00DB Adresse des Zeichens links oben im Puffer Niederwertiges Byte zuerst, mindestens $5800
$00DC—$00DD Adresse des Zeichens links oben im Bildschirmspeicher Niederwertiges Byte zuerst, immer $0400
$0750-$0755 Energie Dezimalzahl (ASCII) im Bildschirmspeicher

Die Spielwelt wird intern als 128 × 72 Zeichen große Karte in einem Puffer an Adresse $5C00...$7FFF gespeichert. Zu Beginn jedes Levels löscht das Programm diesen Speicherbereich (füllt ihn mit Nullbytes) und zeichnet dann zufällig die Himmelskörper der Galaxie ein. Während des Spiels geht die Scrollroutine stets von der Adresse des Zeichens in dieser Karte aus, das in der linken oberen Ecke des Bildschirms zu sehen sein soll, und kopiert ab hier den Inhalt von insgesamt 19 Bildschirmzeilen in den Bildschirmspeicher um. Die Quell- und Zieladressen dieses Kopiervorgangs werden zunächst aus den Zeigern an $00DA...$00DD initialisiert (siehe Tabelle oben) und dann Zeile für Zeile im Code per Selbstmodifikation hochgezählt (die Quelladressen um jeweils 128 Bytes, die Zieladressen um jeweils 40 Bytes):

2BA2: LDA *$DA    ; Low-Byte der Quelladresse im Puffer
2BA4: STA $2BBB   ; in den Code der Scrollroutine umkopieren
2BA7: LDA *$DB    ; High-Byte der Quelladresse im Puffer
2BA9: STA $2BBC   ; in den Code der Scrollroutine umkopieren
2BAC: LDA *$DC    ; Low-Byte der Zieladresse im Bildschirmspeicher
2BAE: STA $2BBE   ; in den Code der Scrollroutine umkopieren
2BB1: LDA *$DD    ; High-Byte der Zieladresse im Bildschirmspeicher
2BB3: STA $2BBF   ; in den Code der Scrollroutine umkopieren
2BB6: LDY #$15    ; Insgesamt 21 Zeilen umkopieren
2BB8: LDX #$26    ; 39 Zeichen pro Zeile kopieren (im 38 Spalten-Bildschirmmodus)
2BBA: LDA $6934,X ; Zeichen von Quelladresse aus Puffer holen
2BBD: STA $0400,X ; Zeichen an Zieladresse in Bildschirmspeicher schreiben
2BC0: DEX         ; Zeichenzähler vermindern
2BC1: BPL $2BBA   ; Rücksprung falls noch nicht ganze Zeile kopiert
2BC3: CLC         ; CF für Addition löschen
2BC4: LDA $2BBB   ; Low-Byte der Quelladresse holen
2BC7: ADC #$80    ; Zeilenlänge des Puffers (128 Zeichen) addieren
2BC9: STA $2BBB   ; und zurückschreiben
2BCC: BCC $2BD2   ; Sprung falls kein Übertrag
2BCE: INC $2BBC   ; sonst High-Byte der Quelladresse erhöhen
2BD1: CLC         ; CF für Addition löschen
2BD2: LDA $2BBE   ; Low-Byte der Zieladresse holen 
2BD5: ADC #$28    ; Zeilenlänge des Bildschirms (40 Zeichen) addieren
2BD7: STA $2BBE   ; und zurückschreiben
2BDA: BCC $2BDF   ; Sprung falls kein Übertrag
2BDC: INC $2BBF   ; sonst High-Byte der Zieladresse erhöhen
2BDF: DEY         ; Zeilenzähler vermindern
2BE0: BNE $2BB8   ; Rücksprung falls noch nicht 19 Zeilen umkopiert
2BE2: RTS         ; Rückkehr aus Unterprogramm

Das Blinken der Mega-Minen ist dadurch implementiert, dass die Definition des entsprechenden Zeichens $5B im Zeichensatz periodisch modifiziert (bitweise invertiert) wird:

4258: LDX #$07    ; Zeichendefinition der Mega-Mine besteht aus 8 Bytes (0...7)
425A: LDA $3AD8,X ; Zeichendefinition ab Adresse ($3800 + $5B × 8) byteweise lesen
425D: EOR #$FF    ; bitweise invertieren (Einerkomplement)
425F: STA $3AD8,X ; und zurückschreiben
4262: DEX         ; Bytezähler vermindern
4263: BPL $425A   ; Rücksprung falls kein Unterlauf, also noch nicht 8 Bytes
4265: RTS         ; Rückkehr aus Unterprogramm

Bewertung[Bearbeiten | Quelltext bearbeiten]

Bewertung der C64-Wiki-Benutzer (10=die beste Note):
6.00 Punkte bei 1 Stimme.
Zur Stimmabgabe musst Du angemeldet sein.
Lemon64 6,16 18. Juni 2024 - 32 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 18. Juni 2024
Atarimania 6.6/10 18. Juni 2024 - 55 votes
Rombachs C64-Spieleführer 7 September 1984 - "Urteil 2"


Kritik[Bearbeiten | Quelltext bearbeiten]

Stephan64: "Wer einfach nur ein hübsches Ballerspiel sucht und dafür bereit ist, über eine haarsträubende Hintergrundgeschichte und die konsequente Missachtung physikalischer Gesetzmäßigkeiten augenzwinkernd hinwegzusehen, der ist mit "Astro Chase" gut bedient. Offenbar haben sich auch die Autoren des Spiels selbst nicht allzu ernst genommen — oder wie anders ist sonst der Hinweis in der Anleitung zu verstehen, dass der Einschlag einer Mega-Mine nicht nur das Ende des Planeten Erde, sondern auch das Ende des Spiels bedeutet? 6 Punkte für einen kurzweiligen Zeitvertreib, der in den höheren Levels allerdings deutlich zu schwierig geraten ist."

Rombachs C64-Spieleführer: "Ein ganz lustiges und auf höheren Spielstufen ziemlich schwieriges Spiel für Leute, die gerne den Finger auf dem roten Knopf haben. (Urteil 2)."[1] Die vollständige Beschreibung des Spiels findet sich hier.

Sonstiges[Bearbeiten | Quelltext bearbeiten]

Cover[Bearbeiten | Quelltext bearbeiten]

Cover des Kassettenversion

Inlay[Bearbeiten | Quelltext bearbeiten]

Inlay der Kassettenversion

Kassette[Bearbeiten | Quelltext bearbeiten]

Kassette

Theme[Bearbeiten | Quelltext bearbeiten]

Während des gesamten Spiels erklingt durchgehend eine einstimmige Begleitmelodie (laut Anleitung die "Ouvertüre 1812" von Tschaikowski). Zudem ertönt beim Aktivieren des Schutzschilds eine kurze Tonsequenz. Die nachfolgende Galerie zeigt diese Musikstücke in der üblichen Notenschreibweise. Für eine kreative Weiterverwendung stehen die Noten auch als PDF-Dokument (Datei:AstroChase Theme PDF.pdf) und in der ABC-Musiknotation (Datei:AstroChase Theme.abc.txt) zur Verfügung.


Musiknoten der Begleitmelodie, rekonstruiert durch Mitprotokollieren aller Schreibzugriffe auf den SID
Melodie beim Aktivieren der Schutzschilde



Schnelllader[Bearbeiten | Quelltext bearbeiten]

Die Kassettenversion von Astro Chase verwendet einen integrierten Software-Schnelllader, der beim Laden automatisch aktiviert wird und den Ladevorgang um etwa den Faktor 4,5 beschleunigt. Dieser Schnelllader ist in verschlüsselter Form im Header des auf Kassette gespeicherten Programms untergebracht, wird also bereits beim Auffinden des Dateinamens in den Kassettenpuffer übertragen. Das Programm selbst ist nur eine kurze Routine, die diesen Schnelllader dann entschlüsselt und ausführt. Ferner übernimmt dieses Programm die Aufgabe, den Schnelllader nach getaner Arbeit wieder zu zerstören, damit ein nachträgliches Auslesen des Kassettenpuffers keine Rückschlüsse auf seine Arbeitsweise zulässt. Während des Ladevorgangs zeigt der Bildschirm meist ein horizontales Streifenmuster; zeitweilig ist auch der unten abgebildeten Ladebildschirm zu sehen.

Der Schnelllader ist in der Lage, nacheinander bis zu 256 einzelne Programmteile nachzuladen. Jeder solchen Datei ist dabei eine 4 Byte lange Datenstruktur mit der Start- und Endadresse des nachfolgenden Datenblocks vorangestellt. Durch eine optimierte Codierung (kürzere Intervalle für 0- und 1-Bits, kein Paritätsbit und -byte, keine doppelte Speicherung der Programmdaten) benötigt das Laden von "Astro Chase" rund zwei Minuten, während die Datassettenroutinen des KERNAL für eine Datei dieser Größe fast 9 Minuten brauchen würden.

Fast genauso interessant wie der Schnelllader ist die Routine, die ihn vor seinem Einsatz decodiert. Um die genaue Funktionsweise zu verschleiern, verwendet dieser Decodierer eine große Zahl von illegalen Opcodes (mehrheitlich NOPs) und erscheint daher beim Disassemblieren zunächst eher wie ein zufälliger Datenblock denn wie ausführbarer Code. Dieser Programmteil wird in den Speicherbereich $02A7...$030B geladen und überschreibt dort zwei BASIC-Vektoren, wodurch er nach dem Laden sofort gestartet wird.

Der gleiche Schnelllader kommt auch bei den Kassettenversionen der Spiele Aztec, Bristles und Starquake zum Einsatz. Im Handbuch zum Spiel findet sich der Vermerk "Burner 'FASTLOAD' (C) 1984 D. Turner/Dream Software.". Die genaue Funktionsweise ist aus dem kommentierten Assemblerlisting ersichtlich.


Ladebildschirm der Kassettenversion




Videomitschnitt[Bearbeiten | Quelltext bearbeiten]


Erfolgreiche Rettung der Erde (Level 23 und 24)

Trivia[Bearbeiten | Quelltext bearbeiten]

Nach dem Laden der Kassettenversion von Astro Chase findet sich im Speicherbereich an Adresse $0E0C—$0E19 die Zeichenkette "NO HACKING!!!". Angesichts der zahlreichen im Internet verfügbaren Cracks darf die Wirksamkeit dieser Ermahnung bezweifelt werden.

Highscore[Bearbeiten | Quelltext bearbeiten]

Topscore von 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. Platz von Ivanpaduano 3. Platz von Stephan64
2. Platz von Ivanpaduano 3. Platz von Stephan64


Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Astro Chase Sprache:english
Handbuch
Magazine


Quellen

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