Archive for Juli 2015

Bomb Jack für Commodore 64: Bessere Portierung

4. Juli 2015

Bomb-Jack-DX-BG1-V01-CRT

Bomb Jack war Mitte der 80er Jahre ein beliebter Arcade-Automat. Kurzbeschreibung: Der Spieler steuert den springenden und gleitenden Superhelden Jack, der in fünf touristischen Orten jeweils 24 Bomben einsammeln/entschärfen muss. Er wird bei der Ausübung seiner Rettungsaktion durch diverse, metallisch aussehende, Gegner behindert. Auf die meisten Homecomputer der 80er Jahre wurde das Spiel portiert, allerdings mit unterschiedlich viel Liebe und Einsatz.

Die Atari XL/XE-Computer haben erst 2008 einen (Homebrew-) Bomb Jack Port bekommen, der auf der C64-Engine basiert aber grafisch deutlich aufgepeppt wurde. Als ich mir diese Version auf YouTube angesehen habe, bekam ich Lust, mal zu gucken, wie eine überarbeitete C64-Version aussehen könnte, wenn man die Fähigkeiten des Rechners besser ausnutzt.

Bomb-Jack-DX-BG2-V01-CRT

Was ich damals in der Spielhalle bei Bomb Jack grafisch besonders beeindrucken fand, waren die metallisch glänzenden Gegner-Sprites, die Farbverläufe der Plattformen und natürlich die (für die damalige Verhältnisse) hochwertigen Hintergrundbilder. Vieles davon ist bei der Portierung auf der Strecke geblieben. Zudem kommt einem die C64 Version zu „eng“ vor, man hat einfach nicht die Bewegungsfreiheit, die man in der Arcade-Version hat. Das liegt zum einen an dem vertikal verkleinerten Spielfeld (232 (116) x 184 gegenüber 208 x 208 Pixel), zum anderen an den zu großen Sprites.

Bei den Sprites ist ein weiteres Problem, dass der C64 dafür nur 3 Farben zur Verfügung hat, von denen 2 sich auch noch alle Sprites teilen müssen, also nur eine wechseln kann. Im C64-Port wurden als feste Farben schwarz und rot gewählt. Ich habe versucht, über eine andere Farbwahl (schwarz und weiß) etwas mehr Originaltreue herauszuholen. Ich wollte die dreidimensional wirkenden Schattierungen der Arcade-Gegner zumindest andeuten, gleichzeitig aber die Sprites gegenüber dem bestehenden C64-Port verkleinern. Weil ich neben schwarz und weiß auch mindestens einen Übergangsfarbton (grau) benötigte, musste ich in den meisten Sprites auf die roten Augen/Flächen verzichten. Als Gegenleistung erscheinen sie jetzt leicht dreidimensional und sie trennen sich auch besser (siehe „Bird“) vom Hintergrund.

Ich hatte meinen Mockup-Screen (erstes Hintergrundbild (Pyramide/Sphinx) mit „festverdrahtetem“ erstem Levelaufbau und ein paar Sprites) im Forum64.de gepostet und es gab tolle Rückmeldungen. Einige riefen nach einem neuen Port, doch ich hatte keinen Programmierer an der Hand, da P1X3L.net-Gruppenmitglied ALeX mit anderen Projekten ausgelastet war. Es fanden sich aber interessierte Programmierer ein und letztendlich kristallisierte sich Endurion als Lead-Programmierer heraus. Er wird von ogd bei hardwarenaher Programmierung unterstützt. Letzterer war es, der über einen Trick dem C64 eine weitere Character-Zeile abgerungen hat, sodass wir vertikal fast die Auflösung des Originals erreichen können (207 vs. 208 Pixelzeilen). Das ermöglicht uns, weitgehend die originalen Plattform-/Bomben-Konstellationen aufzubauen. ogd war auch für die geöffneten Border inkl. der dortigen Sprite-basierten Anzeigen und auch die Darstellung des von mir neu umgesetzten, nun animierten, Bomb Jack Logos zuständig. Endurion kümmert sich um „alles andere“, also die Darstellung der Bitmap-Hintergründe, die Platzierung und das Abräumen der Bomben (inkl. Zünder, auch alles Bitmap-Grafik), die Plattformen der ganzen Levels, die Bewegungen und Kollisionen der Sprites auf dem Spielfeld und natürlich die ganze Spiele-Logik. Also eben das, was ein Spiel zu einem Spiel macht.

Eine erste Herausforderung für den Programmierer war meine Vorstellung, die ganze Darstellung nicht, wie sonst bei Spielen üblich, im sog. Zeichensatz-Modus erfolgen zu lassen, sondern den Multicolor-Bitmap-Modus (auch als Koala-Grafik bekannt) dafür zu nutzen. Der Vorteil ist, dass man flexibler auf die 16 Farben des C64 zugreifen kann, um die Hintergrund-Bilder der Arcade-Version originalgetreuer nachbilden zu können. Neben ein paar anderen Nachteilen benötigt der Grafikmodus  aber mehr Speicher und wir müssen 5 Hintergrundbilder im C64-RAM (max. 55 KB) unterbringen. Dank moderner Komprimierungs-Algorythmen konnte der Speicherbedarf aber im Zaum gehalten werden, sodass trotz aufwändiger Grafiken ein „Onefiler“ (also ohne Nachlade-Technik) weiterhin denkbar bleibt. Es wird bei Levelwechsel On-the-fly der benötigte Hintergrund plus das zugehörige Bomben-Paket entpackt, die Plattformen und Bomben platziert und dann kann quasi weitergespielt werden.

Bis jetzt habe ich 3 der benötigten 5 Hintergrundbilder fertiggestellt. Für diese habe ich auch alle theoretisch vorkommenden Bombenpositionen (76 je Bild) „handoptimiert“, was die durch die festen Blöcke „durchscheinenden“ Hintergründe angeht.

Bomb Jack (C64) – Bessere Portierung (Der Original-Thread im Forum64)
YouTube: Bomb Jack DX (C64) Alpha

Artikel zum Arcade-Original und zum bisherigen C64-Port

C64-Wiki-Eintrag des Original-Ports von 1986
kultboy.com: Bomb Jack
Bomb Jack (original) bei Lemon64
YouTube: C64 Longplay – Bomb Jack
YouTube: Arcade Longplay BombJack
YouTube: Let’s Compare (Bomb Jack)

Unser Projekt hat schon, ganz ohne es zu wollen, ein wenig Aufmerksamkeit erregt. Ich verlinke hier mal die Erwähnungen in der „Internet-Presse“:

Lemon64: Bomb Jack (C64) – Better Porting
Indie Retro News: Bomb Jack – C64 classic is getting an incredible overhaul!
Indie Retro News: Bomb Jack DX C64 – C64 classic overhauled alpha footage!
Vintage Is The New Old: Bomb Jack DX – C64 Classic Remake Video Footage
English Amiga Board: Bomb Jack DX C64 (New Arcade Port)
Nexgam Forum: Bomb Jack DX C64 (Neue Arcade Portierung des Klassikers) WIP
Retroinvaders: Bomb Jack DX C64 – C64 classic overhauled alpha footage!
Retrocomputerspt.org: Bomb Jack DX – Remake para Commodore 64
Nemesiz4ever: Bomb Jack DX in Entwicklung
Central Retro Indie: Bomb Jack DX for the C64 – In the making