Ghettoblaster

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Ghettoblaster
Titelbildschirm
Spiel Nr. 317
Bewertung 6.73 Punkte bei 22 Stimmen
Entwickler Tony Gibson, Mark Harrison
Firma Virgin Games
Verleger Virgin Games, Aackosoft, Mastertronic
Musiker Tony Gibson, Mark Harrison
HVSC-Datei /MUSICIANS/G/Gibson_Tony/Ghettoblaster.sid
Release 1985
Plattform(en) C64
Genre Action
Spielmodi Einzelspieler
Steuerung Icon Port2.pngIcon joystick.png
Medien Icon kassette.png Icon disk525.png
Sprache Sprache:englisch Sprache:niederländisch
Information aka Ghetto Blaster oder als Mastertronic-Release: Streetbeat bzw. Street Beat: An Adventure in the Land of the Good Groove


Beschreibung[Bearbeiten | Quelltext bearbeiten]

Der Spieler steuert Rocking Rodney, den Besitzer eines riesigen Ghettoblasters, durch die Stadt Funky Town. Um Geld zu verdienen, heuert Rodney bei der Plattenfirma Interdisc Records an, die ihre neuen Songs direkt auf der Straße an den Passanten ausprobieren wollen. Dazu muss sich Rodney hinter blinkenden Türen ein Tape besorgen, dazu noch Batterien für den Ghettoblaster, und los geht's. Auf Knopfdruck "schießt" man mit Noten und bringt die Passanten zum Tanzen. Für jedes Tape muss man eine bestimmte Anzahl von Fußgängern von der Musik "überzeugt" haben, danach bringt man das Tape zu Interdisc Records und besorgt sich das nächste. Um die Aufgabe nicht unnötig einfach zu machen, treiben mehrere Gegner guter Musik in der Stadt ihr Unwesen, darunter Psycho Killer und Drogendealer.

"Gotcha!"

Gestaltung[Bearbeiten | Quelltext bearbeiten]

Grafisch ist das Spiel sehr simpel gehalten. Den unteren Teil nimmt ein Bild unseres Ghettoblasters ein, das die seit Spielbeginn verstrichene Zeit, den Batteriestand, die Lautstärke und die An- bzw. Abwesenheit einer Kassette anzeigt. Der obere Teil zeigt das Spielgeschehen ohne besondere grafische Kniffe, allein Rocking Rodneys Lockenpracht ist schön anzuschauen. Die Stadt besteht aus insgesamt 252 Bildschirmen, zwischen denen im Flick-Screen-Verfahren umgeschaltet wird.

Die Darstellung findet im Multicolor-Textmodus statt (Video-RAM an Adresse $4400), wobei für das Spielgeschehen (Textzeile 2−13) und für Meldungstexte und und Ghettoblaster (Textzeile 1 und und 14−25) unterschiedliche Zeichensätze zum Einsatz kommen (an Adresse $5000 bzw. $5800), zwischen denen mittels Rasterzeilen-Interrupts in Rasterzeile 57, 154 und 162 umgeschaltet wird.

Rodney und die anderen Bewohner der Stadt werden als Multicolor-Sprites in einfacher Breite und Höhe dargestellt, abgeschossene Musiknoten als Monocolor-Sprites. Alle anderen grafischen Elemente, insbesondere die blinkenden Türen, bestehen aus Textzeichen. Eine Besonderheit des Spiels ist es, dass die Bewohner (insgesamt zwischen 128 und 256 Figuren) sich auch dann mit konstanter Geschwindigkeit durch die Straßen der Stadt bewegen, wenn sie im momentan nicht dargestellt werden. Ihr ungefährer Aufenthaltsort lässt sich daher meist aus dem Ort des letzten Zusammentreffens und ihrer Bewegungsrichtung ermitteln.

"All quiet"

Hinweise[Bearbeiten | Quelltext bearbeiten]

Die Steuerung im Spiel findet mittels Joystick und Tastatur statt:

Tastatur
  • F1 : Ghettoblaster leiser.
  • F3 : Ghettoblaster lauter.
  • F5 : Ghettoblaster on.
  • F7 : Ghettoblaster off.
  • SPACE : Pause.
  •  : Ändert Rodneys Hautfarbe (!)
  • Q : Quit.


Joystick
  • Joystick nach links / Joystick nach rechts : Bewegung links/rechts.
  • Joystick nach vorne : Haus oder Park betreten; an einer Kreuzung um die Straßenecke gehen.
  • Joystick zurück : Haus oder Park verlassen; Straßenseite wechseln.
  • Feuerknopf drücken : Musiknoten auf Passanten abfeuern (Reichweite abhängig von der eingestellten Lautstärke).


Gegner[Bearbeiten | Quelltext bearbeiten]

Ghettoblaster ToneDeafWalker.gif

Tone Deaf Walkers
Tone Deaf Walkers beschädigen den Blaster. Maximal zwei Mal lässt er sich im Repair Shop wieder reparieren, beim dritten Mal wird er irreparabel zerstört und das Spiel ist zu Ende.

Ghettoblaster PsychoKiller.gif

Psycho Killer
Einer der drei Gegner, die Rodney dermaßen vermöbeln, dass das Spiel zu Ende ist. Qu'est-ce que c'est? He must have sensed a fear of music!

Ghettoblaster Cop.gif

Cop
Polizisten haben's nicht gerne laut. Sie stürmen auf Rodney zu und drehen die Lautstärke runter: People here don't dig your sound! Wenn Rodney den Blaster mit voller Lautstärke dröhnen lässt, wird er sogar verhaftet und das Spiel ist zu Ende... You're playing your blaster much too loud. You're busted.

Ghettoblaster BanditOfBeat.gif

Bandit of the Beat
Dieser Bandit stiehlt die Kassette im Blaster - Bandit of the beat nicked your tape! Zum Glück haben die Künstler, die das Band bereitgestellt haben,offensichtlich einen unerschöpflichen Vorrat.

Ghettoblaster GangsterOfGroove.gif

Gangster of Groove
Stiehlt ebenfalls Rodneys Kassette - tape snaffled by gangster of groove!

Ghettoblaster BustyBlood.gif

Busty Blood
Hat zunächst kein Interesse an Rodney und geht ihm aus dem Weg, beginnt aber ihm nachzustellen, sobald er einige Kassetten bei Interdisc abgeliefert hat. Wenn sie ihn erwischt, ist das Spiel zu Ende - she loved to love you baby!


Ghettoblaster PusherMan.gif

Pusher Man
Der Pusher ist ein Drogendealer. Er ist sehr schnell und das Spiel ist vorbei, wenn er Rodney bekommt. Goddamn the Pusher Man! White lines ... don't don't do it.

Ghettoblaster KarmaChameleon.gif

Karma Chameleon
Das Chameleon ist nur eine blinkende Umrandung einer Person. Bei Kontakt stiehlt er die Kassette und beamt Rodney an einen weit entfernten Ort.

Ghettoblaster JollyGreenGiant.gif

Jolly Green Giants
Diese Giganten bevölkern nach einiger Zeit den Itchycoo-Park, in dem man die letzte Kassette abholen muss. Glücklicherweise gibt es sie nur in diesem Park, und solange Rodney sich dicht bei einen der Fliegenpilze im Park aufhält, lassen sie ihn in Ruhe. Eine Berührung, und das Spiel ist vorbei: It's a hard life - it's like a jungle sometimes, it makes me wonder how I keep from going under...

Ghettoblaster JumpinJackFlash.gif

Jumpin' Jack Flash
Jack ist die einzige Person, die einem hilft. Falls Rodney noch auf der Suche nach einem Tape ist, so beamt er ihn direkt zu einer blinkenden Tür, ansonsten zurück zu Interdisc. Nur auf dem Weg zur letzten Kassette im Itchycoo-Park hilft Jack nicht weiter. It's a gas gas gas!


Tipps[Bearbeiten | Quelltext bearbeiten]

  • Um die Kassetten schnell abliefern zu können, ist es wichtig, dass dafür möglichst wenige Passanten zum Tanzen gebracht werden müssen. Zur Musik der ersten Kassette muss nur ein Passant tanzen, danach ist die geforderte Anzahl dann aber immer abhängig davon, wie lange Rodney im Besitz der vorigen Kassette war: Alle 10 Sekunden erhöht sich die Anzahl der Passanten um 1. Sind zwischen dem Abholen einer Kassette und dem Einliefern bei Interdisc beispielsweise 37 Sekunden vergangen, so müssen von der nächsten Kassette 4 Passanten — errechnet als 1+INT(37/10) — überzeugt werden. Insbesondere sollte man eine Kassette also erst dann abholen, wenn der Ghettoblaster betriebsbereit (mit Batterien ausgestattet und nicht reparaturbedürftig) ist. Falls Rodney eine Kassette gestohlen wird (vom "Bandit of the Beat", vom "Gangster of Groove" oder vom "Charma Chameleon"), so stoppt der Timer, bis Rodney Ersatz besorgt hat, und läuft danach weiter.
  • Eine genaue Kenntnis des Stadtplans hilft dabei, von beliebigen Stellen der Stadt aus schnell den Heimweg zu finden. Trifft man unterwegs auf "Jumping Jack Flash", so ist es meist von Vorteil, mit seiner Hilfe den Rückweg abzukürzen und in der unmittelbarer Umgebung von "Interdisc" die noch fehlenden Passanten zum Tanzen zu bringen.
  • Wenn man die Meldung bekommt, dass der New Inn einen DJ sucht, sollte man so schnell wie möglich dort hin. Während der Party (hinter verschlossenen Türen) kann eine große Anzahl Leute auf einmal von dem Song überzeugt werden.
  • Die Gegner verfolgen Rodney zwar hartnäckig, kommen aber nicht auf die Idee, ihm auch nachzusetzen, wenn er die Straßenseite wechselt. Wenn sich Rodney also stets in der Nähe der Straßenmitte bewegt (am unteren Rand seines Bildschirmfensters), reicht jederzeit ein kurzes Zurückziehen des Joysticks, um sich in Sicherheit zu bringen - falls auf der anderen Straßenseite nicht auch ein Gegner lauert!
  • Falls Rodney gerade nicht verfolgt wird und sich auf der Suche nach Kassetten oder Passanten befindet, so empfiehlt es sich, in jedem Screen die Straßenseite zu wechseln, um möglichst viele Straßenabschnitte in kurzer Zeit zu sichten. Dabei ist jedoch zu beachten, dass Rodney nach dem Wechsel auf die andere Straßenseite in die andere Richtung (rechts statt links oder umgekehrt) weitergehen muss, um einer Straße zu folgen.
  • Zahlreiche Türen sind unverschlossen und können Rodney als Zuflucht dienen, wenn er von besonders hartnäckigen Gegnern verfolgt wird. Ebenso kann es hilfreich sein, kurzzeitig ein Elektrogeschäft oder einen Reparatur-Shop zu betreten, auch wenn man keine Batterien oder Reparaturen benötigt, um dadurch beispielsweise einen "Tone Deaf Walker" abzuschütteln. Nach einiger Zeit wird Rodney von den Bewohnern oder vom Ladenbesitzer zwar wieder nach draußen befördert — aber dann ist die Gefahr hoffentlich längst vorbei.
  • Wird Rodney gar zu hartnäcking von einem "Gangster of Groove" oder einem "Bandit of the Beat" verfolgt, so kann er diesen in die Flucht schlagen, indem er ihn mit Musiknoten "beschießt".
  • Beim Abholen der letzten Kassette im Itchycoo Park ist es schwierig, den Jolly Green Giants weiträumig auszuweichen. Stattdessen führt schnelles Vorgehen zum Ziel: Direkt zum Häuschen in der Mitte des Parks, Kassette entgegennehmen (der Bewohner setzt Rodney nach 7 Sekunden von die Tür und schließt diese dann ab) und im Zickzackkurs entlang der Grenze benachbarter Screens zurück zum unteren Ausgang des Parks.

Lösung[Bearbeiten | Quelltext bearbeiten]


GhettoblasterMap.png

Die Karte der Stadt
Ghettoblaster Map.png

Alternative Karte mit genauen Ausdehnungen der einzelnen Straßen



Die Karte des "Einsatzgebietes" von Rocking Rodney. Ohne diese ist es sehr schwer sich zurechtzufinden. Insbesondere ist es wichtig, sich die Lage der Verbindungswege "My Way" und "Aint No Way" einzuprägen, da die Hälfte der Stadt nur über diese Durchgänge zu erreichen ist. Die rechte der obigen Karten zeigt hierfür die genaue Ausdehnung der einzelnen Straßen, da deren Namen stellenweise auf gegenüberliegenden Straßenseiten unterschiedlich ist. Rot markiert ist die Lage von "Interdisc Records", grün der "New Inn".

Cheats[Bearbeiten | Quelltext bearbeiten]

Die Version von "Remember" bietet alle möglichen und unmöglichen Trainer (10 an der Zahl).

Interne Datenstrukturen[Bearbeiten | Quelltext bearbeiten]

Für die Entwicklung eigener Trainerfunktionen und für die Analyse oder Manipulation der vom Spiel genutzen Daten sind Kenntnisse der Speicherbelegung und der internen Arbeitsweise hilfreich. Die folgende Tabelle stellt daher eine Reihe von Informationen über "Ghettoblaster" zusammen. Leider sind die im World Wide Web verfügbaren Cracks üblicherweise komprimiert, so dass sich die hier aufgeführten Informationen nicht direkt durch einen einzelnen Poke ausnutzen lassen.

Adresse Inhalt Bemerkungen
$0033 Funktion des Ghettoblasters $00=ausgeschaltet, $FF=eingeschaltet
$00AC-$00AD Timer für aktuelle Kassette Wird etwa alle 5 ms hochgezählt; die Anzahl der für die nächste Kassette zu überzeugenden Passanten errechnet sich als 1+INT(PEEK($00AD)/8)
$00B9 Anzahl der aktuell tanzender Passanten 0..255, in der Kopfzeile werden nur die letzten beiden Stellen angezeigt (101 Passanten als "01")
$00BA Geforderte Anzahl tanzender Passanten 1..32
$00BF-$00C0 Zähler für Rasterzeileninterrupts Wird 150 Mal pro Sekunde hochgezählt, Grundlage für Zufallszahlenberechnung
$00E0 Zustand des Ghettoblasters $00=intakt, $FF=defekt
$00E1 Anzahl Beschädigungen des Ghettoblasters 0..3, bei 3 Beschädigungen ist das Spiel zu Ende
$00FE Nummer des aktuellen Screens 1..252
$46B2-$46B4 Seit Spielbeginn verstrichene Zeit (Bandzählwerk) Codes $F0...$F9 repräsentieren die Ziffern 0...9, höchstwertige Stelle zuerst
$CC09 Restdauer der Party im "New Inn" Wird im Sekundentakt heruntergezählt, auch während des "Pause Mode"
$CC14 Bewegungsrichtung in nächsten Screen $00=oben, $01=unten, $02=links, $03=rechts
$CC2B Batterieladung 0..12
$CC2C-$CC2D Zähler Batterieladung Startet beim Kauf neuer Batterien bei $8000 und zählt während der Musikwiedergabe etwa alle 5 ms abwärts (mit der Lautstärke als Schrittweite). Bei Unterlauf wird die Batterieladung um 1 verringert und der Zähler wieder auf $3000 gesetzt.
$CC2F Lautstärke 0..9
$FC70-$FD6F Zuordnung Screens zu Straßen 1..19 (zugehörige Straßennamen an $FA1E..FC6F)
$FD70-$FE6F Anzahl Türen pro Raum 0..3 (nur Türen, hinter denen sich eine Kassette befinden kann)

An den Adressen $C400...$C8FF findet sich eine Tabelle mit 256 jeweils 5 Byte langen Einträgen, von denen die ersten vier Bytes angeben, welcher Screen an den aktuellen Aufenthaltsort bei einer Bewegung nach oben, unten, links und rechts angrenzt ($FF: Kein Durchgang möglich).

Im Bereich $CC50...$CCAF befindet sich eine Tabelle mit 12 jeweils 8 Byte langen Einträgen, die für jede Kassette den Ort und den aktuellen Status speichert. Beim Start des Spiels werden nur die Bytes an Offset $00, $01 und $05 initialisiert. Kann sich hinter mehreren Türen in einem Screen eine Kassette befinden, so wird erst beim erstmaligen Betreten des Screens zufällig entschieden, welche Tür denn nun blinken soll. Die X-Koordinate dieser Tür wird dabei ermittelt, indem der Inhalt des Video-RAMs nach den Zeichencodes für die linke obere Ecke einer Tür durchsucht wird:

Offset Inhalt Bemerkungen
+$00 Screen-Nummer $01..$FC
+$01 Anzahl Türen in diesem Screen 1..3
+$02 Status $00: Screen noch nicht betreten, $01: Kassette ist vorhanden, $FF: Kassette ist bereits abgeholt
+$03 X-Koordinate der Tür 0..39, Position für Blinken
+$05 Akzeptanz $00=Kassette wird akzeptiert, $FF: DON'T PLAY 'THAT' SONG FOR ME

Im Bereich $3800...$3FFF befindet sich eine Tabelle mit 256 jeweils 8 Byte langen Einträgen, die für jede Figur den Typ, den Ort und den aktuellen Status speichert. Auf diese Weise kann jede Figur ihren eigenen Weg zielstrebig durch die Stadt gehen.

Offset Inhalt Bemerkungen
+$00 Laufende Nummer 0..255, Grundlage für die Festlegung der Sprite-Farbe
+$01 Typ der Figur $00..$0F, siehe nachfolgende Tabelle
+$02 Zähler 0..4, Abwärtszähler für Bewegung innerhalb der Stadt, etwa alle 0.5 s weitergezählt
+$03 Screen-Nummer $01..$FC
+$05 Zähler für Bewegung 0..3, bei Unterlauf des Zählers an Offset $02 weitergeschaltet
+$06 Bewegungsrichtung $01=oben, $02=unten, $04=links, $08=rechts
+$07 Status Bit 0: Figur aktiv (1) / inaktiv (0), Bit 1: Figur im aktuellen Screen (1)/nicht im aktuellen Screen (0), Bit 2: Figur tanzt (1)/tanzt nicht (0)

Wie viele der 256 möglichen Figuren tatsächlich aktiv und in der Stadt unterwegs sind, hängt von der Anzahl der Kassetten ab, die Rodney erfolgreich bei Interdisc eingeliefert hat:

Code Figur 0 1 2 3 4 5 6 7 8 9
$00
Ghettoblaster JumpinJackFlash.gif
Jumping Jack Flash
10 11 11 11 11 11 11 11 11 11
$01
Ghettoblaster ToneDeafWalker.gif
Tone Deaf Walker
4 5 5 5 5 6 12 12 12 12
$02
Ghettoblaster GangsterOfGroove.gif
Gangster of Groove
0 0 8 16 16 16 16 16 16 16
$03
Ghettoblaster BanditOfBeat.gif
Bandit of the Beat
0 0 0 4 16 16 16 16 16 16
$04
Ghettoblaster BustyBlood.gif
Busty Blood
0 0 0 0 0 11 15 15 15 15
$05
Ghettoblaster PassantHut.gif
Passant mit Hut
14
$06
Ghettoblaster Cop.gif
Cop
0 10 14 14 14 14 14 14 14 14
$07
Ghettoblaster PsychoKiller.gif
Psycho Killer
3 3 3 3 3 3 3 7 11 11
$08
Ghettoblaster PassantKappe.gif
Passant mit Kappe
31
$09
Ghettoblaster PassantHaar.gif
Passant ohne Kopfbedeckung
18
$0A
Ghettoblaster PassantStreifen.gif
Passant mit gestreifter Mütze
23
$0B
Ghettoblaster PassantBart.gif
Passant mit Bart
25
$0C
Ghettoblaster JollyGreenGiant2.gif
Gelber Jolly Green Giant
0 0 0 0 0 16 16 16 16 16
$0D
Ghettoblaster JollyGreenGiant.gif
Brauner Jolly Green Giant
0 0 0 0 0 16 16 16 16 16
$0E
Ghettoblaster KarmaChameleon.gif
Charma Chameleon
0 0 0 0 0 0 2 10 10 10
$0F
Ghettoblaster PusherMan.gif
Pusher Man
0 0 0 0 0 0 0 0 8 8
- Passanten insgesamt 111
- Figuren insgesamt 128 140 152 164 176 220 232 244 256 256

Für die ersten 40 Sekunden eines Spiels zeigt der folgende animierte Stadtplan die Bewegungsmuster zweier ausgewählter Figurentypen ("Jumping Jack Flash" grün, "Tone Deaf Walker" rot). In den blau unterlegten Screens kann eine Kassette abgeholt werden. Sowohl die Position der Kassetten als auch die Startpunkte für die Bewegungen der Figuren werden bei jedem Start eines Spiels zufällig festgelegt.


Animierte Karte mit den Bewegungen ausgewählter Figuren ("Jumping Jack Flash" grün, "Tone Deaf Walker" rot)



Bewertung[Bearbeiten | Quelltext bearbeiten]

Bewertung der C64-Wiki-Benutzer (10=die beste Note):
6.73 Punkte bei 22 Stimmen (Rang 543).
Zur Stimmabgabe musst Du angemeldet sein.
C64Games 6 20. April 2008 - "gut" - 2645 downs
Lemon64 7,6 20. April 2008 - 36 votes
Kultboy.com 8,5 26. Juni 2011 - 4 votes
ZZap64 69% Ausgabe 7/85
Ready64 6,5 20. August 2019 - 2 voti


Kritik[Bearbeiten | Quelltext bearbeiten]

Rockford: "Ghettoblaster ist durch die Idee alleine schon ein Spielchen wert, wenn es auch nicht für Stunden fesselt. Bis auf massenweise Anspielungen auf die Musikwelt der 70er und 80er kaum Gimmicks. 6 Punkte."

Rombachs C64-Spieleführer II: "Ghettoblaster ist ein Spiel, das mit der Break-Dance-Welle zu schwimmen versucht. Grafik und Sound sprechen für sich, und auch die Spielidee ist recht gut. Es stellt sich nur die Frage, ob die Musik nicht auf einer Stereo-Anlage weitaus besser klingt. Wer aber versuchen will, allen Freunden die Cassetten zu entlocken, der kann mit Ghettoblaster die "Funky Street" lange unsicher machen."[1] (Urteil 3)[2] Die vollständige Beschreibung des Spiels findet sich hier.

Shakermaker303: "Ganz nette Idee, es wird aber irgendwann langweilig, in den entlegensten Winkeln der Stadt nach Leuten zu suchen, die man zum abdancen bringen muss. Musik gibt's reichlich, viele (teilweise recht ordentliche) Tracks. Denke auch, das 6 Punkte ok sind."

Equinoxe: "Hat mich damals irgendwie fasziniert und musste es immer wieder spielen, obwohl ich gar nicht so richtig wusste, was ich da machen musste. Lag vielleicht aber auch daran, dass es eines der ersten Spiele war, die ich für den C64 hatte. Aus heutiger Sicht dann doch ein recht schnell ermüdendes Spiel."

Stephan64: "Eines meiner Lieblingsspiele! Fängt ganz harmlos an, wenn Rodney auf der Suche nach blinkenden Türen und den dahinter befindlichen Kassetten die weitläufige und detailreich gestaltete Stadt durchstreift. Aber nach und nach ist er nicht mehr nur von meist harmlosen Passanten umgeben, sondern auf einer zunehmend hektischen Flucht vor Gangstern, Psychopathen und Monstern... und wenn schließlich nach dem Einlegen der letzten Kassette der Ghettoblaster die leicht abgewandelte Titelmelodie des Spiels erklingen lässt, erreicht die Spannung ihren Höhepunkt. Ein Punkt Abzug für die unsaubere Grafikprogrammierung (Flackern von Sprites und Scrolltexten); die restlichen 9 Punkte sind für eine faszinierende Spielidee und ihre gelungene Umsetzung wohlverdient."

Sonstiges[Bearbeiten | Quelltext bearbeiten]

Das Spiel erschien später auch unter dem Titel "Street Beat" bei Mastertronic für Datasette.

Cover[Bearbeiten | Quelltext bearbeiten]

Ooomph!

Theme[Bearbeiten | Quelltext bearbeiten]

Die musikalische Untermalung besteht aus der Titelmelodie und zwölf teilweise recht ähnlichen Musikstücken, die sich auf den von Rocking Rodney eingesammelten Kassetten befinden. Die nachfolgende Galerie zeigt eine Auswahl dieser Melodien in der üblichen Notenschreibweise. Für eine kreative Weiterverwendung stehen die Noten aller Melodien auch als PDF-Dokument (Datei:Ghettoblaster Theme PDF.pdf) und in der ABC-Musiknotation (Datei:Ghettoblaster Theme.abc.txt) zur Verfügung.


Musiknoten der Titelmelodie und des Musikstücks "Jammin'", rekonstruiert durch Mitprotokollieren aller Schreibzugriffe auf den SID
Musiknoten des Musikstücks "Walkin'"
Musiknoten des Musikstücks "Relapse"



Schnelllader[Bearbeiten | Quelltext bearbeiten]

Die Kassettenversion von Ghettoblaster verwendet einen integrierten Software-Schnelllader, der beim Laden automatisch aktiviert wird und den Ladevorgang um etwa den Faktor 5 beschleunigt. Der Schnelllader ist in der Lage, nacheinander beliebig viele einzelne Programmteile nachzuladen. Jeder solchen Datei ist dabei eine 7 Byte lange Datenstruktur mit der Sequenznummer, der Start- und Endadresse sowie ggf. dem Einsprungpunkt ($0000 für "nach dem Laden nicht anspringen") vorangestellt. Durch eine optimierte Codierung (kürzere Intervalle für 0- und 1-Bits, kein Paritätsbit, keine doppelte Speicherung der Programmdaten) benötigt das Laden von Ghettoblaster weniger als vier Minuten, während die Datassettenroutinen des KERNAL ein Programm dieser Größe in mehreren Abschnitten laden müssten und hierfür mehr als eine Viertelstunde bräuchten.

Auffallend an diesem Schnelllader ist die fast schon paranoide Konsistenzprüfung. Jede Unstimmigkeit — eine bereits vor dem Laden vorhandene Cartridge-Signatur "CBM80" an Adresse $8004, ein überlanges 1-Bit, ein Prüfsummenfehler, ein unerwarteter Interrupt — führt sofort dazu, dass der C64 vollständig blockiert wird. Das daraufhin einsetzende Flackern des Bildschirms kann nur durch das Ausschalten der Versorgungsspannung beendet werden.

Ansonsten ist der Schnelllader eher lieblos programmiert: Obwohl es für die Autostart-Funktion ausreicht, den OUTPUT-Vektor an Adresse $0326/$0327 umzubiegen, wird bei Laden der komplette Speicherbereich $031A-$03FF überschrieben, und obwohl der Schnelllader an Adresse $0566 endet, werden anschließend mit den langsamen Kernal-Routinen noch 666 weitere, bedeutungslose Bytes in den nachfolgenden Speicherbereich bis $07FF geladen. Durch den weitgehenden Verzicht auf indizierte Adressierung und auf Variablen in der Zeropage ist der Programmcode zudem länger und langsamer als nötig.

Das Spiel "Ghettoblaster" wird in insgesamt 5 Abschnitten geladen, deren Länge sich auf fast 54 KByte summiert ($E000-$FFFE, $0880-$7FFF, $8009-$9FFF, $A000-$C00F, $8000-$8008). Interessant ist insbesondere der zuletzt geladene Programmteil von nur 9 Bytes Länge, der zwischen dem zweiten und dritten Abschnitt ausgespart und für ganz zuletzt aufgehoben wurde: Er überschreibt die "CBM80"-Signatur, die das Vorhandensein eines Steckmoduls vortäuscht, und sorgt dafür, dass nun nach dem Laden ein Reset einen Neustart des Spiels auslöst.

Die genaue Funktionsweise dieses Schnellladers ist aus dem kommentierten Assemblerlisting ersichtlich.


GhettoblasterFastloader1.gif

Auf die Cartridge-Signatur "CBM80" an RAM-Adresse $8004 reagiert der Fastloader allergisch




Highscore[Bearbeiten | Quelltext bearbeiten]

Topscore von Stephan64
  1. Stephan64 - 10 Tapes (21.04.2022)
  2. Robotron2084 - 5 Tapes (13.02.2012)
  3. Equinoxe - 3 Tapes (07.10.2011)
  4. TheRyk - 1 Tape (06.10.2011)


2. Platz von Robotron2084 3. Platz von Equinoxe
2. Platz von Robotron2084 3. Platz von Equinoxe


Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Ghetto Blaster (video game) Sprache:english

Download

  Street Beat:

Dokumentation

  Street Beat:

Videos


Quellen

  1. Pascal Ciampi, Ralf Tellgmann: "Rombachs C64-Spieleführer II", Rombach, 1986, Seite 134
  2. Pascal Ciampi, Ralf Tellgmann: "Rombachs C64-Spieleführer II", Rombach, 1986, Seite 378