Steine und Diamanten – Boulder Dash auf dem Hive

mario-drohne1Nun, letztes Wochenende hatte ich Zeit und Lust etwas entspannendes am Hive zu machen. So ein kleines Game wäre doch mal was nettes, aber ein Wochenende ist da etwas wenig Zeit für ein komplettes solches Projekt. Aber wozu in die Ferne schweifen, sieh das Gute liegt so nah!: Es gibt doch schon genug fertige kleine Retrogames für den Propellerchip. Vor wenigen Wochen erst haben die Propellerheads im Parallax-Forum das Projekt „Boulder Dash“ beendet – und, wie ich finde, ist dabei eine wirklich tolle Version herausgekommen. Es sollte doch kein großes Problem sein den Code an den Hive anzupassen, genau die richtige Fingerübung für ein entspanntes Wochenende… 😉

Das Game an sich – also der ursprüngliche Basiscode aus dem Parallax-Forum – läuft auf einem einzigen Propellerchip! Was war zu tun um diese Version an den Hive anzupassen:

1. Der Code kann im wesentlichen fast ausschließlich auf Bellatrix laufen. Dafür müssen die entsprechenden Belegungen der IO-Pins für Video und Keyboard angepasst werden.

2. Da Bellatrix keinen Sound ausgeben kann, sondern diese Aufgabe im Hive Administra übernimmt, muß die Soundausgabe angepasst werden. Im Originalcode übernimmt das Objekt „sound.spin“ diese Aufgabe – welches wieder den SIDemu in einer getrennten Cog startet. Hier zeigt sich die Stärke der SPIN-Objekte: Für die Anpassung brauchte ich einfach nur ein neues Objekt gleicher Struktur definieren, ohne das Hauptprogramm zu ändern. Dieses neue Soundobjekt startet ebenfalls eine Cog, welche einzig die Aufgabe hat, die Kommunikation zu Regnatix/Administra zu realisieren.

3. Regnatix-Code: Tja, die Königin kann bei der ganzen Sache Däumchen drehen, denn sie hat nur folgend Aufgaben in einer einzigen Cog zu bewältigen:

  • Bellatrix-Code laden
  • SFX-Slots in Administra initialisieren
  • Warten bis Bellatrix einen Ton von sich geben möchte und Übermittlung dieser Tonesequenz an Administra

Gesagt, getan! Als erstes habe ich die Hardwarekonfiguration des Programms an den Hive angepasst und das Soundobjekt entfernt. Damit lief das Game schon per Host-Uplink auf Bellatrix. Um zu testen ob der Code nicht in Konflikt mit dem Loader in Bella gerät, compilierte ich eine BIN-Datei und testete die Lauffähigkeit in Regime direkt auf dem Hive.
Damit werden natürlich auf der einen Seite massig Ressourcen in Bellatrix gegenüber dem ursprünglichen Code frei und es sind durch die Verwendung von HSS/SFX + Waveplayer + SDCard mehr Möglichkeiten gegeben.

Bellatrix-Code                    : 20,5 KByte
Regnatix-Code                   : 3,3 KByte

Bei diesen Werten ist zu beachten, dass der Regnatix das blanke IOS mit 2,6 KByte eingebunden hat – ohne Optimierung, denn ein Großteil der IOS-Routinen sind in diesem Fall ungenutzt.

Zeitaufwand                       : ca. 3 nette Abende 😉

Allerdings gab es ein kleines Problem bei der Umsetzung: Das Original verwendet einen SID-Emulator für die Effekte und für die Musik im Titelscreen. In Administra haben wir aber momentan nur das HSS und einen WAV-Player verfügbar. Die reinen Soundeffekte im Spiel kann man dabei recht einfach mit den SFX-Kanälen nachbilden. Um mit den Möglichkeiten zu experimentieren, habe ich mir ein kleines SFX-Tool gebastelt, mit welchem man interaktiv mit den Parametern spielen kann. Zusätzlich hab ich noch ein paar andere Soundeffekte gegenüber dem Originalcode aufgepeppt, was ja absolut kein Problem ist, wenn man einen Wavplayer plus SD-Laufwerk zusätzlich im Zugriff hat. Für irgendwas müssen ja die zusätzlichen Propeller im Hive gut sein…

Aber was ist mit der Titelmusik? Nach ein wenig Suche im Netz fand ich einen tollen Remix von Pex „Mahoney“ Tufvesson und nach kurzem Mailkontakt hatte ich auch die Zusage von Mahoney, diesen Song im Game verwenden zu dürfen. Es lohnt sich übrigens für jeden Retrofan, mal bei ihm auf der Webseite rumzustöbern! Auch sehr interessant die Auftritte der Gruppe „Visa Rösters“ – hier mal die a capella Version von IK – das Original kennt jeder echte Nerd… 😉

So eine Anpassung eines bestehenden Ein-Propeller-Codes ist natürlich eigentlich nicht wirklich optimal für den Hive, denn es nutzt ja nur unwesentlich die Möglichkeiten des Gerätes – läuft doch das Game schon allein auf einem Chip! Ein reines Hive-Game würde einen wesentlich größeren Teil der Gameengine in Regnatix konzentrieren, zumindest würde ich das so machen.

Links: