Werkstattbuch / FABULA C64 & Amiga

Aus der Werkstatt.

LOG.

Was sich an FABULA ändert, Tag für Tag: an der Engine und an der Werkstatt, für den Commodore 64 und für den Amiga. Die C64-Fassung ist weit fortgeschritten, die Amiga-Fassung steckt mitten in der Entwicklung.

  1. C64Engine

    Kein heller Ton mehr nach dem Schritt

    Nach jedem Schrittgeräusch klang ein kleiner heller Ton nach. Ein Geräusch borgt sich eine Stimme der Musik und gibt sie danach zurück. Der Schritt endete aber nach 80 Millisekunden mitten in seiner Hüllkurve, und der Rest klang mit dem Ausklang der Musik weiter: gut 300 Millisekunden lang, auf der Tonhöhe, die die Musik auf dieser Stimme zuletzt hatte. Gefunden hat das ein Mitschnitt der SID-Register im Emulator. Er hat auch die erste Vermutung widerlegt, die Note werde neu angeschlagen.

    Jetzt gibt das Geräusch die Stimme ohne Ausklang zurück, und die nächste Note der Musik stellt ihren eigenen ein. Der Ton ist nach wenigen Millisekunden weg. Der naheliegende Weg, die Stimme einfach stumm zu schalten, hätte gehaltene Noten abgeschnitten. Das gilt für jedes Geräusch, zu hören war es vor allem bei den Schritten.

  2. C64Engine

    Zwölf Dinge in der Tasche

    Die Figur trägt jetzt bis zu zwölf Dinge statt acht, sechs sind je Seite zu sehen. Geblättert wird mit Pfeilen an den Enden der Trennlinie: rechts zur zweiten Seite, links zurück. Die Pfeile stehen nur da, wenn es mehr als sechs Dinge sind. Eine Fassung mit drei Zeilen ohne Trennlinie, neun Dinge auf einmal, war schon gebaut und im Emulator geprüft. Sie wurde verworfen, denn zwischen Tasche und Verben soll eine Grenze stehen.

    Den Platz dafür hat der knappste Teil des Programms abgegeben: Namen und Schautexte der getragenen Dinge liegen jetzt woanders, dort sind rund 800 Bytes mehr frei. Der Spielstand hat damit eine neue Fassung. Ältere lehnt die Engine ab, statt sie falsch zu lesen.

  3. C64Engine

    Auf den Betrachter zu und von ihm weg

    Ein Wunsch aus dem Forum: Figuren sollen auch in die Tiefe laufen können, sonst ist ein langer Gang, der in den Bildschirm hineinführt, nicht zu machen. Bisher waren vorn und hinten nur Stehbilder, und vor dem ersten Schritt drehte sich jede Figur zur Seite. Jetzt läuft eine Spielfigur auf den Betrachter zu und von ihm weg. Sie braucht dafür ihre Stehbilder von vorn und hinten und dazu ein oder zwei Schrittbilder je Ansicht. Der Gang ist Stehbild, Schritt 1, Stehbild, Schritt 2.

    Die Figur dreht sich nach vorn oder hinten, sobald sie nur noch senkrecht geht und mindestens zehn Punkte vor sich hat. Sonst drehte sie der kurze Rest eines schrägen Weges vor jedem Ding zum Betrachter. Am Ziel bleibt sie so stehen. Ohne Schrittbilder bleibt alles wie bisher, und Nebenfiguren, die ein Skript gehen lässt, laufen weiter seitwärts. Nebenbei gefunden: Beim Wechsel der Spielfigur schrieb die Kopie ihrer Sprites über ihren Platz hinaus. Was dort lag, etwa ein Stehbild von der Seite, wurde überschrieben. Auch das ist behoben.

  4. C64Werkstatt

    Vorn und hinten im Figurenfenster

    Unter den Bildknöpfen steht eine zweite Reihe: Bild 8 und 9 sind Schritte von vorn, 10 und 11 von hinten. Schritt 1 von vorn und von hinten reicht, Schritt 2 macht den Gang runder. Die Vorschau läuft aus der gewählten Ansicht, die Blassanzeige legt das passende Stehbild darunter, und eine rote Zeile sagt, wenn gemalte Schritte nicht zählen. Neu daneben ist Spiegeln: Es dreht das gewählte Bild links-rechts, denn Schritt 2 von vorn ist meist Schritt 1 gespiegelt.

    Auch eine Nebenfigur, die nur steht, bekommt jetzt ihre Ansichten von vorn und hinten. Die beiden Knöpfe waren bei ihr grau, obwohl Engine und Prüfung sie kennen. Die Raumansicht zeigt eine solche Figur jetzt auch so und nicht mehr von der Seite. Außerdem öffnen die Fenster der Werkstatt dort, wo sie zuletzt standen, und in der Größe, auf die man sie gezogen hat, auch nach einem Neustart.

  5. C64Engine

    Der Mund sitzt, wo er hingehört

    Wer nach links schaute, bewegte beim Sprechen den Hinterkopf. Nach links zeigt die Engine gespiegelte Sprites, setzte den Mund aber an die Stelle, an der er im Bild nach rechts sitzt. Im Spiegelbild liegt diese Stelle in den Haaren. Das galt für Spielfigur und Nebenfiguren, in jedem Spiel, seit es den sprechenden Mund gibt. Jetzt spiegelt der Bau die Mundstelle mit.

    Von vorn sprach eine Figur bisher an der Stelle aus dem Profil, also neben der Gesichtsmitte. Jetzt liest der Bau den Mund aus der Vorderansicht. Ist dort ein kurzer Mundstrich gemalt, öffnet sich der Mund eine Zeile darunter. Vorher fand die Suche an seiner Stelle die Nasenspitze. Schon am Vortag hatte die Suche nach dem Gesicht dazugelernt: Sie findet auch Haut in der zweiten gemeinsamen Spritefarbe, und bei Haar in der eigenen Farbe sucht sie das Gesicht dort, wo ein Auge sitzt. Vorher bewegten solche Figuren beim Sprechen zwei Punkte in der Frisur.

  6. C64Engine

    Man sieht, wer spricht

    Bisher stand jeder gesprochene Satz weiß, und man sah nicht, ob die Spielfigur, eine Nebenfigur oder der Erzähler redete. Jetzt spricht die Spielfigur weiß, jede Nebenfigur in ihrer Sprechfarbe und die Erzählung in einer eigenen Farbe. Die Sprechfarbe steht im Figurenfenster, Vorgabe „automatisch“: eine lesbare Farbe je Figur. Die Farbe der Erzählung steht in den Einstellungen, Vorgabe Hellgrau.

    Alte Projektdateien bleiben dabei Byte für Byte, was sie waren. Der knappste Teil des Programms ist sogar elf Bytes kleiner geworden, weil das Färben jetzt außerhalb von ihm geschieht.

  7. C64Engine

    Im Abspann stehen keine Figuren mehr

    Beim ersten Abspann eines Spiels, das gerade entsteht, liefen die Namen über ein schwarzes Bild, und mittendrin standen die Figuren des letzten Raumes. Der Abspann schaltete die Sprites zwar in jedem Bild aus. Seit dem Sprite-Multiplexer vom 13. September schaltete der Rasterinterrupt sie aber aus seinem letzten Plan gleich wieder ein. Jetzt nimmt er im Abspann denselben Weg wie unter einem ganzseitigen Bild: keine Wechsel, alle Sprites aus. Das kostet drei Bytes.

    Nachgemessen im Emulator an einem echten Abspann: ohne die Korrektur waren in 10 von 279 Messungen Sprites an, mit ihr in keiner. Die erste Probe hatte übrigens gar keinen echten Abspann gestartet und nur zufällig lauter Nullen gesehen. Aufgefallen ist das erst beim ehrlichen zweiten Anlauf.

  8. AmigaEngine

    Musik aus dem Fast-RAM, ohne Aussetzer

    Beim Probespielen auf der Vampire V4SA riss die Musik im Vorspann bei jedem Bild ab, und danach dauerte es Sekunden, bis sie wieder einsetzte. Die Ursache lag in der Ladepause: Solange gelesen wird, gibt die Engine dem Betriebssystem die Hardware zurück, und dabei schaltete sie auch Paulas Tonkanäle ab. Wieder an gingen sie erst mit der nächsten Note. Bei einer Aufnahme in Abschnitten von 7,68 Sekunden kann das bis zu acht Sekunden dauern. Jetzt laufen die Tonkanäle durch jede Pause hindurch.

    Dazu kam die Frage, warum eigentlich alles im Chip-RAM liegt. Bisher lag dort die ganze Musik, 723 KB für 69 Sekunden. Eine Aufnahme in Abschnitten braucht das nicht: Sie liegt jetzt vollständig im Fast-RAM, und im Chip-RAM stehen nur zwei Puffer zu je 80 KB. Paula spielt den einen, der andere ist schon eingereiht und wird beim nächsten Durchlauf nahtlos übernommen. Danach füllt die Engine den frei gewordenen Puffer mit dem nächsten Abschnitt. Die Musik liegt dabei auf zwei Kanälen in der Mitte, und zwei bleiben für Geräusche frei. Erkannt wird so ein Stück am Modul selbst, einen Schalter in der Werkstatt braucht es nicht. Ein letztes Stocken bei den Zwischensequenzen kam vom Hauptschalter aller DMA-Kanäle, den die Pause kurz mit ausschaltete. Der bleibt jetzt an.

  9. AmigaWerkstatt

    Ein Satz steht so lange, wie man zum Lesen braucht

    Auf der V4SA liefen die Texte zu schnell ab. Nachgemessen stand im Skript nach fast jedem Satz eine Pause von gut einer Sekunde. Die Engine hätte den Satz länger gezeigt, aber dann kam schon der nächste. Das ist kein Fehler eines einzelnen Skripts, sondern die bequemste Art, eins zu schreiben, und es würde in jedem Spiel wieder passieren.

    Deshalb gilt jetzt die Regel, die FABULA auf dem C64 gefunden hat: höchstens acht Sekunden für einen voll ausgenutzten Satz von 76 Zeichen, kürzere anteilig, nie unter 1,8 Sekunden. Der Bau verlängert eine zu kurze Pause nach einem Satz von selbst, und die Engine lässt den Text genauso lange stehen. Weil die Werkstatt über denselben Bau geht, gilt das für jedes Spiel, ohne dass jemand eine Zahl anfasst. Ein Klick kürzt weiterhin jede Pause ab.

  10. C64Engine

    Die gestrichelte Linie in der Raummitte

    Auf Höhe der Raummitte zog sich manchmal eine gestrichelte Linie quer durch den Raum. In einem vollen Raum stand sie in jedem Bild. Dort schaltet der Rasterinterrupt auf den zweiten Zeichensatz um, und er kam in manchen Bildern zu spät. Genau in diesen Takten holt der VIC die Daten der Sprites, die die Zeile kreuzen, und hält dafür die CPU an. Je mehr Figuren auf dieser Höhe stehen, desto länger dauert das. Ein fester Zeitpunkt hilft nicht, nachgemessen an sechs Werten: Was im leeren Raum schon zu früh schreibt, kommt im vollen noch zu spät.

    Die Lösung ist deshalb kein Takt, sondern der Inhalt. Der Bau legt unter jedes Zeichen der Zeichenzeile 7 im zweiten Satz eines mit derselben untersten Punktzeile. Dann sieht die Zeile, in der umgeschaltet wird, mit beiden Sätzen gleich aus, und der genaue Zeitpunkt ist gleichgültig. Nachgemessen im Emulator und auf dem Ultimate 64: im vollen Raum vorher in allen 16 Bildern die Linie, jetzt in keinem. Das kostet in der unteren Raumhälfte eine Handvoll bis gut zwanzig Zeichen. Der Import zählt sie schon mit, und läuft ein Raum über, nennt der Bau Raum und Zahl. Beim selben Suchen behoben: In Räumen, die breiter als der Bildschirm sind, schrieben Animationen ihr Zeichen zu weit links hin. Das Licht einer Laterne leuchtete mitten in einer Hauswand.

  11. C64Engine

    Pünktlich, auch wenn viele Figuren im Raum stehen

    In einem Raum mit vielen Figuren kam die Umschaltung auf den zweiten Zeichensatz einige Zeilen zu spät. Die Folge war ein Streifen im falschen Zeichensatz auf Höhe der Raummitte, unter Überlast auch ein gestreifter Boden und eine Leiste voller Zeichenmüll. Gemessen mit Haltepunkten im Emulator kam die Mitte in Zeile 117 bis 124 statt 113, auch in einer Aufstellung, zu der die Prüfung schwieg. Der Grund: Ein Sprite-Wechsel rechnete seine Register Bit für Bit nach und kostete in dichten Zeilen vier bis fünf Rasterzeilen. Trotzdem durfte er bis in die feste Stufe hineinlaufen.

    Jetzt ist jeder Wechsel vorausgerechnet und kostet die Hälfte, und keiner läuft mehr in eine Stufe hinein. In jeder Messung kam sie pünktlich. Ein Band, das kurz nach einer solchen Stufe beginnt, bekommt dafür kein Sprite, dessen Wechsel erst hinter ihr käme. Die Prüfung rechnet die Zeit eines Wechsels jetzt mit und warnt, wenn die Spielfigur selbst ein Band verliert, getrennt mit und ohne Zeiger. Gegengeprüft wurde das an sieben Aufstellungen: Wo sie ein fehlendes Band voraussagte, fehlte genau dieses, und sonst keines.

  12. C64Engine

    Drei Nebenfiguren nebeneinander

    Die Sprites werden jetzt nach Zeile vergeben, nicht mehr in der Reihenfolge, in der sich die Figuren anmelden. Kopf- und Beinband einer Figur zu 63 Pixeln teilen sich ein Sprite, und Figuren, die in der Höhe gestaffelt stehen, sind vollständig zu sehen. Vorher fehlten ihnen Bänder. Neben einer Spielfigur zu 63 Pixeln stehen jetzt drei Nebenfiguren gleicher Größe nebeneinander, wo die dritte vorher ohne Kopf und Rumpf war. Nur wenn der Zeiger auf ihrer Höhe steht, verliert sie ihr Beinband.

    Dabei kamen zwei Fehler im Rasterinterrupt ans Licht. Lag ein Sprite-Wechsel knapp vor der Raummitte, fielen alle weiteren Wechsel dieses Bildes aus. Und ein Wechsel, dessen Zeile schon erreicht war, wurde bis zur Leiste verschoben und kam damit für jede Figur zu spät. Beides ist behoben. Die neue Vergabe kostet im knappsten Teil des Programms kein Byte. Die Prüfung rechnet sie genau nach und sagt, ob Bänder fehlen oder nur dann, wenn der Zeiger daneben steht.

  13. C64Engine

    Nebenfiguren wohnen in ihrem Raum

    Der Spritevorrat von 47 Blöcken musste bisher alle Figuren eines Spiels tragen. Bei einer Spielfigur zu 63 Pixeln blieben drei Nebenfiguren gleicher Größe übrig, mit Aktionsbild nur zwei. Ein Spiel, das gerade entsteht, braucht sieben. Die Lösung kopiert nichts: Im Block jedes Raumes stand zwischen den Farben und dem zweiten Zeichensatz bisher nur Leere, und der VIC kann Sprites dort direkt lesen. Dort liegen jetzt die Nebenfiguren dieses Raumes: 35 Spriteblöcke bei 40 Spalten, 30 bei 50, 24 bei 63. Das reicht in einem Raum mit 40 Spalten für fünf stehende Figuren zu 63 Pixeln oder acht zu 42, in beliebig vielen Räumen. Im Vorrat bleiben nur der Zeiger und die Spielfiguren.

    Eine Figur, die gezeichnet ist, aber noch nirgends vorkommt, kostet keinen Platz mehr. Vorher brach der Bau dann mit „Kein Platz mehr“ ab. Bestehende Projekte sehen gleich aus, im Emulator Bild für Bild gegen den alten Stand verglichen. Platz gab es noch an einer zweiten Stelle: Die festen Sätze der Engine liegen nicht mehr bei den Spieldaten, sondern im freien Speicher hinter dem Abspann. Dazu gehören „Das kann ich nicht mitnehmen.“, die Tempoansagen und die Meldungen des Spielstandmenüs. Das sind rund 500 Bytes mehr für Räume, Dinge und Flags, und dort wurde es bei zwei Dutzend Räumen eng.

  14. C64Werkstatt

    Die Standardfigur geht im Profil

    Im Forum fiel auf, dass die Figur auch beim Gehen nur von vorn zu sehen war. Das stimmte, und es lag nicht an der Engine, sondern an der Zeichnung. Im alten Laufzyklus stand nur der Kopf seitlich. Rumpf, beide Arme und die sich kreuzenden Beine blieben von vorn gemalt, wie bei jemandem, der auf die Kamera zugeht. Jetzt hat die Figur einen schmalen Rumpf, einen Arm, Beine im Schritt und eine Schuhspitze, die nach vorn zeigt.

    Der Arm geht mit dem Schritt nach vorn, erst halb, dann ganz, dann wieder halb, und hängt im Stand, wie bei der Figur Ron. Eine erste Fassung ließ ihn gegen das Bein schwingen und dabei hinter den Rücken gehen. Beim Menschen stimmt das, im Sprite sah es falsch herum aus: Beide Beine haben dieselbe Farbe, und welches das nahe ist, erkennt niemand. Die neue Figur gilt für jedes neue Projekt und für die Beispiele, ein eigenes Projekt behält seine Figur. Neu ist dazu das Beispiel Promenade, ein leerer Laufsteg mit vier Pfosten als Maßstab. Es ist dafür da, eine Figur gehen zu sehen.

  15. C64Engine

    Die Taste W lässt sich abschalten

    In einem Spiel mit mehreren Spielfiguren schaltet W durch alle. Eine Geschichte, in der eine zweite Figur nur in bestimmten Passagen gespielt wird und sonst woanders ist, konnte das nicht sperren. Jetzt gibt es in den Einstellungen den Schalter Der Spieler schaltet mit W um. Ist er aus, wechselt nur ein Skript die Figur, und der Tastenzweig fällt beim Bau ganz aus dem Modul. Das sind 40 Bytes weniger im knappsten Teil des Programms. Ist W aus und wechselt kein Skript die Figur, meldet sich die Prüfung, denn dann wäre die zweite Figur nie zu spielen.

  16. C64Werkstatt

    Die Werkzeuge ziehen nach

    Seit dem 13. September hat ein Raum zwei Zeichensätze zu je 256 Zeichen. Der Bildimport zählte aber weiter den ganzen Raum gegen 256 und vereinfachte Bilder, die die Engine unverändert hätte zeigen können. Jetzt zählt und vereinfacht er je Raumhälfte, und das Ergebnis nennt oben und unten getrennt. Nachgemessen an 26 Vorlagen: Bei zwölf mussten bisher Zellen zusammengelegt werden, bis zu 220, jetzt bei keiner. Titel- und Zwischenbilder haben weiter einen Zeichensatz.

    Dabei gefunden: Der Import legte für Animationen nie Zeichen zurück, weil er ihre Größe unter einem Namen suchte, den eine Animation gar nicht hat. Jetzt rechnet er ein Zeichen je Animationszelle. Außerdem schnitt das Figurenfenster Figuren zu 63 Pixeln nach 42 Zeilen ab, weil das Malfeld die Größe behielt, die es beim Öffnen hatte. Gespeichert war die Figur immer vollständig, und jetzt wächst das Malfeld mit.

  17. C64Engine

    Ein Stehbild von der Seite, gelernt an Ron

    Die Engine kann eine Figur wirklich seitlich gehen lassen, es kommt nur auf die Zeichnung an. Um das zu zeigen, ist Ron in FABULA eingezogen, die Figur, die WebFritzi aus dem Forum64 für einen eigenen Entwurf gezeichnet hat. Übernommen wurde er unverändert: drei Sprites übereinander, vier Laufbilder und ein eigenes Stehbild. WebFritzi hat erlaubt, Ron weiter als Demo zu verwenden. Die Engine hat daraus dauerhaft gelernt, denn eine Figur kann jetzt ein achtes Bild haben: wie sie von der Seite dasteht. Bisher zeigte sie im Stillstand ihr erstes Laufbild. Das musste zugleich Schritt und Ruhe sein, oder die Figur stand mit einem Fuß in der Luft. Mit dem Stehbild darf der Laufzyklus vier echte Schritte haben. Gemalt wird es nach rechts, nach links spiegelt es der Bau, und auch Nebenfiguren stehen darin.

    Ron hat dabei einen Fehler aufgedeckt. Seit dem 13. September las die Engine die Farbe nach dem ersten Band an einer verrutschten Stelle. Rons Beine wurden hellgrau, und in einem anderen Spiel trug eine Figur die Hose einer anderen. Gemalt und gespeichert war alles richtig, nur das Spiel zeigte es falsch. Der automatische Vergleich der gebauten Dateien konnte das nicht sehen.

  18. C64Engine

    Der Auftakt des ersten Raumes kam nie

    Ein Spiel betritt beim Start seinen ersten Raum — und startet gleich danach sein Startskript. Die Engine hat aber nur einen Platz für ein laufendes Skript, und so überschrieb das eine das andere: Wer ein Intro hatte, verlor still den Auftakt seines ersten Raumes. Zu sehen war nichts, es fehlte nur etwas. Jetzt wird das Raumskript vorgemerkt und läuft, wenn das Startskript zu Ende ist — in dem Raum, in dem man dann steht.

  19. C64Engine

    Ton zum Titelbild

    Der Titelschirm stand bisher nur da. Jetzt darf ein kleines Skript mitlaufen, solange er zu sehen ist — für einen Klang, ein Geräusch, ein Musikstück. Ein Klick beendet es und das Spiel fängt an. Mehr als Ton geht dort bewusst nicht: der erste Raum ist zu dieser Zeit noch gar nicht geladen, und was einen Raum braucht, hält die Prüfung auf, bevor gebaut wird.

  20. C64Engine

    Wer spricht, bewegt den Mund

    Sagt eine Figur etwas, springen zwei Punkte in ihrem Gesicht im Takt von der Hautfarbe auf die Umrissfarbe und zurück — sechsmal in der Sekunde, solange der Satz dauert. Es kostet kein gezeichnetes Sprechbild und keinen zweiten Spriteblock: die Engine ändert ein einziges Byte im Kopfband und nimmt es im nächsten Bild zuerst wieder zurück. Wo der Mund sitzt, liest der Bauweg aus dem Stehbild; wer kein Gesicht hat — ein Mond, eine Gestalt unter der Kapuze —, bekommt keinen.

    Von selbst spricht die Spielfigur, wenn sie antwortet, und die Nebenfigur, mit der man redet; ein Raumskript erzählt und bewegt keinen Mund. Für alles andere gibt es einen Befehl: Es spricht. Damit liest sich eine Zwischensequenz wie ein Drehbuch — vor jedem Satz steht, wer ihn sagt.

  21. C64Engine

    Kein Blinzeln mehr beim Hinlegen

    Etwas in einem breiten Raum wieder hinzulegen kostete bisher einen ganzen Raumwechsel: acht Kilobyte aus dem Modul, und währenddessen war das Bild aus — ein Blinzeln mitten im Erzählmoment. Jetzt werden nur die Zellen geholt, die das Ding bedeckt, ein paar Dutzend Bytes. Nachgemessen im Emulator: vorher stand das Bild in 17 von 7 214 Abfragen still, jetzt in keiner einzigen von 7 894.

  22. C64Engine

    Ein Vorspann wie 1987

    Maniac Mansion fängt mit einem Meteor an, der auf ein Haus fällt. Die Frage war, ob die Engine so etwas kann — also ist es nachgebaut worden: der Meteor zieht über den Hügel, der Blitz schlägt ein, der Mond geht hinter dem Hügel auf und das Haus baut sich Stück für Stück auf, während die Kamera mitfährt. Dafür sind drei Dinge dazugekommen: ein Skriptbefehl Kamera, der das Fenster eines breiten Raumes an eine Stelle fährt und dort lässt; Nebenfiguren, die hinter dem Hintergrund stehen können — ein Mond hinter dem Hügel, jemand hinter dem Tresen; und eine laufende Nebenfigur, die ein „Zeigen“ übersteht, statt an ihren Anfang zurückzuspringen. Das Beispielprojekt liegt jedem Paket bei.

  23. C64Engine

    Vier Nebenfiguren, und keiner hat mehr ein festes Sprite

    Bisher gehörte Sprite 0 dem Zeiger, 1 bis 3 der Spielfigur, der Rest den Nebenfiguren — fest, ob gebraucht oder nicht. In einer Zwischensequenz belegte der Zeiger sein Sprite trotzdem (und stand sichtbar im Bild), eine Figur mit zwei Bändern hielt ihr drittes, und drei Nebenfiguren nebeneinander gingen nicht.

    Jetzt meldet jeder je Bild an, was er braucht, und die Engine verteilt danach — die Reihenfolge der Anmeldung ist der Vorrang. Was über acht hinausgeht, wird multiplext: ein Sprite, dessen Figur oben fertig gezeichnet ist, bekommt weiter unten eine zweite. Das hilft Figuren in verschiedener Höhe; nebeneinander in derselben Zeile bleiben es acht, daran ändert kein Trick etwas. Die Prüfung rechnet das jetzt nach und sagt es.

  24. C64Engine

    Zweimal 256 Zeichen je Raum

    Ein Raum bestand aus 256 verschiedenen Zeichen — für Hintergrund, aufhebbare Dinge und Animationen zusammen. Wer ein Foto importierte oder einen breiten Raum baute, lief dagegen. Jetzt sind es 256 für die obere Bildhälfte und 256 für die untere; der Rasterinterrupt schaltet mitten im Bild um. Alte Projekte sehen Punkt für Punkt aus wie vorher, nachgemessen.

  25. C64Engine

    Ein Einschlag, der wirklich kracht

    Neben den acht eingebauten Geräuschen kann ein Spiel jetzt Samples abspielen: ein Schlag, ein Schrei, ein Donner, bis gut zwei Sekunden. Sie kommen aus einer WAV-Datei in die Werkstatt, und was der C64 daraus macht — sechzehn Stufen, 7 882 Werte je Sekunde — zeigt das Fenster als Kurve. Vorgehört wird nicht am Rechner, sondern im Emulator oder auf echter Hardware, mit demselben Abspielteil, den auch das Spiel benutzt: am Rechner klänge die Aufnahme, nicht der SID.

  26. C64Werkstatt

    Was man sieht, steht auch drin

    Ein Auswahlfeld im Skripteditor zeigte etwas an, das nicht gespeichert war: bei „Raumwechsel" stand im Feld Raum sichtbar der erste Raum — gewählt war aber keiner. Gemerkt hat man es erst, als der Bau abbrach mit „Skript nennt Raum '', den es nicht gibt". Eine feste Auswahlliste kann nichts anzeigen, was nicht in ihr steht; ihr den leeren Wert zu geben, tat schlicht nichts. Jetzt steht drin, was zu sehen ist, und alte Befehle heilen, sobald man sie anklickt.

  27. C64Werkstatt

    Der Bau sagt jetzt, wo

    Seine Meldungen nannten, was fehlt, nicht wo — und bei einem leeren Namen blieb davon nichts übrig, woran man sich hätte orientieren können. Jetzt steht Raum, Ding und Verb davor: start2/Lichtschalter 2 / Drücke: Skript nennt Objekt 'TV', das es in diesem Raum nicht gibt.

    Und er fängt gar nicht erst an, wenn die Prüfung eine Lücke findet — ein Skript, das auf einen Namen zeigt, den es nicht gibt. Daraus lässt sich kein Bytecode machen. Die Prüfung wusste das die ganze Zeit; nur durfte sie es bisher erst nach einem gelungenen Bau sagen, und bei einem misslungenen sah man sie nie. Gewöhnliche Hinweise halten den Bau weiterhin nicht auf.

  28. C64Werkstatt

    Ein Proberaum zum Nachschlagen

    Das neue Beispielprojekt zeigt in zwei Räumen jede Fähigkeit der Engine, und die Figur erklärt sie beim Ansehen. Wer wissen will, wie ein Zähler, ein Gespräch oder eine lebende Zelle gebaut wird, sieht dort nach statt im Handbuch. Es liegt in jedem Paket bei.

  29. C64Werkstatt

    Die Sackgassenprüfung

    Lucasfilms Hausregel hieß „keine Sackgassen, kein Tod" — und war eine Regel, eingehalten von Hand. Jetzt wird sie gemessen: die Prüfung meldet, wenn ein Ding verbraucht wird, obwohl eine andere Stelle es noch braucht. Dass die zweite Tür verschlossen bleibt, kann Absicht sein — die Prüfung sagt nur, dass es eine Reihenfolge gibt, nach der es nicht mehr weitergeht.

    Dazu eine zweite: ein Ding, das in die Tasche soll und gar keine eigene Ebene hat. Es wäre im Raum unsichtbar. Beim ersten Lauf hat sie prompt einen echten Fall in TIEFENRUF gefunden.

  30. C64Engine

    Mehrere Spielfiguren

    Wie in Maniac Mansion: ein Spiel darf mehrere Spielfiguren haben, jede mit eigenem Ort und eigener Tasche. Die Welt teilen sie sich — wer unten den Strom abschaltet, macht oben das Licht aus. Umgeschaltet wird mit W oder im Skript.

    Der Platz dafür kam aus dem Modul: drei volle Figuren wären 48 Spriteblöcke, der VIC hat 47. Also teilen sich alle Spielfiguren einen Platz, und beim Umschalten werden ihre Bilder nachgeladen — denselben Weg gehen Räume, Bilder und Musik ohnehin.

  31. C64Engine

    Die Figur greift

    Jede Figur hat jetzt ein siebtes Bild: sie greift, bückt sich, hebt die Lampe. Ein Skript zeigt es, und es hält, bis sie losgeht. Vorher ging eine Tür auf, ohne dass jemand die Hand ausstreckte.

  32. C64Engine

    Zähler, und eine Frage nach der Tasche

    Flags sind an oder aus — „dreimal am Rad drehen" kostete drei davon, ein Vorrat, der kleiner wird, ging gar nicht. Jetzt gibt es acht Zähler von 0 bis 255, mit den sechs Vergleichen. An den Enden halten sie an, statt umzulaufen: ein leerer Vorrat, der weiter abgäbe, stünde sonst plötzlich auf 255.

    Und ein Skript kann endlich fragen, ob die Figur etwas trägt. Bisher musste man beim Aufheben ein Flag mitsetzen und daran denken — genau daraus entstehen die Flags, die gesetzt und nie abgefragt werden.

  33. C64Engine

    Zwischensequenzen lassen sich überspringen

    RUN/STOP überspringt eine Szene. Übersprungen heißt nicht abgebrochen: das Skript läuft vollständig weiter, nur ohne Wartezeit, und zu Fuß geht die Figur achtmal so schnell. Alles, was die Szene setzt und weglegt, geschieht — sonst stünde man danach in einer Welt, in der sie nicht stattgefunden hat.

  34. C64Engine

    Musik und Geräusche zugleich

    Ein Geräusch borgt sich eine SID-Stimme für seine Dauer und gibt sie zurück — das konnte die Engine immer schon, nur ließ sich nicht einstellen, welche. Jetzt je Spiel und je Raum. Die geborgte Stimme verliert ihre laufende Note: auf der Melodie reißt das ein Loch, auf dem Schlagzeug fällt es niemandem auf.

  35. C64Engine

    Die großen Umlaute stehen wieder auf der Linie

    Ä, Ö und Ü baute die Engine bisher aus A, O und U: den Buchstaben eine Zeile tiefer, zwei Punkte darüber. Lesbar — aber sie standen damit tiefer als jeder andere Großbuchstabe und stießen unten an die nächste Zeile. Jetzt sind die drei gezeichnet und sitzen auf derselben Grundlinie wie alles andere, so wie das ß, das sich noch nie ableiten ließ. Der Preis dafür ist echt: wer sein eigenes A malt, bekommt kein passendes Ä mehr geschenkt. Bei den kleinen ä, ö, ü bleibt es beim Ableiten, dort stimmt es.

  36. C64Werkstatt

    Der Stift radiert auch ohne rechte Maustaste

    Im Zeichensatz-Editor ließen sich Pixel malen, aber nicht wieder wegnehmen: die rechte Maustaste war der einzige Radierer, und das stand nirgends im Fenster. Jetzt entscheidet der erste Punkt eines Striches, was er tut — liegt dort schon ein Pixel, radiert der ganze Strich, sonst malt er. Im Figuren- und im Zeigereditor passt ein solcher Umschalter nicht, dort gibt es vier Werte statt an und aus; dafür sagen sie jetzt, dass der Wert „durchsichtig“ der Radiergummi ist.

  37. C64Werkstatt

    Die Werkstatt weiß, welche Fassung sie ist

    Fassung und Baustand stehen jetzt im Fenstertitel und unter „Über“ — vorher gab es keine Nummer, auf die man sich in einem Fehlerbericht berufen konnte. Solange eine Fassung eine Vorabfassung ist, sagt sie das an vier Stellen deutlich, damit keine Testfassung als fertige im Umlauf ist. Und in der Menüleiste steht endlich FABULA statt „Python“.

  38. C64Engine

    Bündige Texte und ein Inventar in drei Spalten

    Die Satzzeile stand um ein Zeichen versetzt zu den Verben darunter; jetzt fluchtet sie. Das Inventar steht in drei Spalten unter den Verben, sechs Dinge sind gleichzeitig zu sehen, und anklickbar ist die ganze Spalte statt nur der Name. Dabei kamen zwei alte Fehler ans Licht, die niemand gemeldet hatte: beim Bildwechsel blitzte die Bedienleiste kurz in der Farbe des Raums auf, und eine Zeile über der Leiste blieb in dieser Farbe stehen. Beides ist weg, auf echter Hardware nachgemessen und nicht nur im Emulator.

  39. AmigaEngine

    Verben auf das Inventar

    „Schau an Ansichtskarte“ hob beim Testen auf der V4SA nur die Karte hervor, sonst geschah nichts. Ein Klick ins Inventar nahm das Stück in die Hand, gleich mit welchem Verb. Die Skripte der Gegenstände waren da, aber nicht zu erreichen. Jetzt verhält es sich wie in Monkey Island 2 und Indiana Jones 4. Hat ein Gegenstand für das Verb ein eigenes Skript oder braucht das Verb nur ein Ding, wird es sofort ausgeführt. Bei „Benutze“ oder „Gib“ kommt er in die Hand und wartet auf das zweite Ding. Dasselbe Stück noch einmal angeklickt legt es wieder weg, und die rechte Maustaste heißt auf einem Gegenstand „Schau an“.

    Im selben Test ließ sich ein Kofferraum öffnen, ohne dass man es sah. Dafür fehlten der Engine zwei Dinge. Ein zugeklappter Zustand wurde beim erneuten Betreten nicht wieder gemalt. Und ein Ding, das zurück ins Bild kam, brachte sein ursprüngliches Bild mit, samt allem, was längst eingesteckt war. Jetzt werden beim Wiedererscheinen die Ebenen der anderen Dinge, die weg oder verändert sind, in ihrer Reihenfolge nachgemalt. Das gilt für jedes Ding, das über einem anderen liegt.

  40. AmigaEngine

    Wie groß eine Figur ist, sagt das Bild

    An der Ortseinfahrt war die Spielfigur größer als das Stadttor. Wie groß eine Figur vorn und hinten im Raum wird, stand bis dahin als eine Angabe für alle Räume in der Engine: 70 Punkte vorn, 58 hinten. Ein Raum aus der Nähe braucht aber große Figuren und eine Totale kleine. Wie groß ein Mensch im Bild ist, ist eine Eigenschaft des Bildes.

    Jetzt hat jeder Raum seine eigene Tiefe: vordere und hintere Bodenzeile, jeweils mit der Figurhöhe dort, dazwischen teilt die Engine. In der Werkstatt stehen dafür zwei Maßfiguren im Bild, denn ob ein Mensch durchs Tor passt, sieht man nur an einem Menschen. Der Blitter skaliert nicht, also wählt die Engine unter fertigen Größenstufen der Figur, und ein weit weg gemalter Raum braucht kleinere Stufen. Ältere Spieldateien bleiben gültig. Ein Raum ohne eigene Tiefe sieht aus wie vorher: im Emulator vor und nach der Änderung fotografiert, kein einziger Punkt anders.

  41. AmigaEngine

    Der Guru beim Beenden

    Das Spiel lief auf der V4SA, warf beim Beenden aber jedes Mal einen Guru. Im Emulator ließ sich das nachstellen: Absturz, Neustart, und das Spiel begann von vorn. Der Fehler stand seit dem zweiten Meilenstein im Quelltext. Ein Aufruf, der zur intuition.library gehört, ging an die graphics.library. Unter derselben Nummer liegt dort eine Funktion, die eine Speicherstruktur anlegt, und die schrieb sie beim Beenden über die untersten 40 Bytes des Speichers. Dort stehen der Zeiger auf die exec.library und die Ausnahmevektoren, und danach führte jeder Griff dorthin ins Leere.

    So lange unentdeckt blieb das, weil ausgerechnet die Fassung mit Protokoll, mit der gesucht wurde, im betreffenden Register zufällig einen gültigen Zeiger hatte. Sie schrieb ihre 40 Bytes an eine Stelle, die niemand mehr brauchte, und lief sauber durch. Jetzt geht der Aufruf an die richtige Bibliothek, alle übrigen Bibliotheksaufrufe der Engine sind gegengeprüft, und auf der V4SA ist das Beenden sauber.

  42. C64Engine

    Dinge in der Tasche

    Getragene Dinge haben jetzt eigene Skripte. Man kann mit ihnen reden, sie für sich benutzen und zwei von ihnen miteinander kombinieren — passt die Verbindung, verschwinden beide aus dem Inventar, und es bleibt das neue Ding. Ein Skript darf dafür ein Ding aus einem ganz anderen Raum einstecken; so kann ein Spiel der Figur auch schon beim Start etwas in die Tasche legen. Geprüft im Emulator und mit SENDESCHLUSS vom Titel bis zum Ende.

  43. C64Engine

    Platz geschaffen

    Die Engine war an zwei Stellen fast voll: unter der Grafik blieben in einem Spiel noch 60 Bytes, bei den Spieldaten in einem anderen 28. Zwei Umzüge haben das gelöst, ohne eine Zeile Spielcode umzuschreiben — der Abspanntext liegt jetzt im freien Speicher hinter dem Zustand der Räume, die Notentabelle bei den Spieldaten. Danach sind unter der Grafik wieder über 500 Bytes frei und bei den Spieldaten bis zu 1000. Geprüft, indem SENDESCHLUSS vom Titel bis zum Ende durchgespielt wurde.

  44. C64Engine

    Die rechte Maustaste bekommt eine Aufgabe

    Noch zwei Wünsche aus dem Forum. Ein Rechtsklick auf ein Ding führt sofort ein Verb aus — Vorgabe „Schau an“, in den Einstellungen wählbar oder abschaltbar. Und das gemerkte Ding ist jetzt zu sehen: zeigt der Zeiger auf nichts, steht es in der Satzzeile; zeigt er auf ein anderes Ding, steht dieses da, wie bei den späteren Vorbildern.

  45. C64Engine

    Die Figuren drehen sich zu den Dingen

    Bisher kannten die Figuren nur die Seitenansicht. Jetzt haben sie auch ein Bild von vorn und eines von hinten, und die Spielfigur wendet sich dem zu, womit sie etwas tut — an der Wanduhr sieht man ihren Rücken, so wie bei Zak McKracken. Nebenfiguren können genauso nach vorn oder hinten schauen, und für Zwischensequenzen gibt es einen Skriptbefehl, der die Spielfigur zum Betrachter dreht. Die Richtung rechnet die Werkstatt aus der Lage des Dings; wo sie danebenliegt, legt man sie am Ding selbst fest.

  46. C64Engine

    Weniger klicken, weniger Verben

    Zwei Wünsche aus dem Forum. Das zuletzt angefasste Ding bleibt gewählt: wer den Becher angeschaut hat und dann auf „Nimm“ klickt, muss ihn nicht noch einmal anklicken. Und ein Spiel darf mit weniger als neun Verben auskommen — ein Feld in den Einstellungen leer lassen, und die übrigen rücken in der Leiste zusammen. Skripte eines weggelassenen Verbs gehen dabei nicht verloren; sie gelten wieder, sobald es zurückkommt.

  47. C64Engine

    Kein Aufblitzen mehr beim Start

    Zwischen Titelbild und Vorspann blitzte bisher kurz auf, was dort nicht hingehört: die Bedienleiste, der erste Raum, ein „Gehe zu“ in der Satzzeile. Beginnt ein Spiel mit einem Bild oder einer Szene, bleibt der Schirm jetzt ruhig, bis sie da ist. Nachgemessen Bild für Bild im Emulator, vorher und nachher.

  48. AmigaWerkstatt

    Inventarbilder werden gezeichnet, nicht ausgeschnitten

    Bisher schnitt der Bau das Bild für das Inventar aus dem Raumbild, 32 × 24 Punkte um die Mitte des Hotspots. Heraus kam ein Stück Hintergrund mit einem Ding darin, zum Beispiel ein Schlüssel auf einem Kofferraumdeckel statt einfach eines Schlüssels.

    Jetzt hat jedes Ding sein eigenes Inventarbild, 32 × 24 Punkte mit durchsichtigem Grund. In der Werkstatt steht es mit Vorschau am Ding, und dazu gibt es einen kleinen Maler: zehnfach vergrößert, sechzehn Farben und eine Auswahl für andere, Stift und Füllen, mit der rechten Taste wird radiert. Es ist bewusst kein zweiter großer Maleditor: Der große malt Räume, der kleine Gegenstände, und jeder ist so groß wie das, was er malt. Der Bau rechnet alle Inventarbilder gemeinsam auf die zehn Farben der Leiste um. Ein Ding ohne eigenes Bild wird wie früher ausgeschnitten.

  49. AmigaEngine

    Zwei Sprachen in einer Spieldatei

    Alles, was im Spiel Worte zeigt, holt sie über eine Nummer aus einer Textablage: Verben, Dingnamen, Sätze, Gesprächszeilen, Abspann und die Texte der Engine. Eine zweite Sprache ist deshalb eine zweite Ablage mit denselben Nummern, und Umschalten heißt, drei Zeiger umzusetzen. Der Rest der Engine muss davon nichts wissen. Bis zu drei weitere Sprachen passen in eine Spieldatei. Was keine Übersetzung hat, bleibt deutsch, und der Bau zählt es. Die Prüfung misst die Übersetzung an denselben Grenzen wie das Original.

    Im Spiel erscheint dann im Menü ein fünfter Eintrag, der die jeweils andere Sprache nennt: „English“ auf Deutsch, „Deutsch“ auf Englisch. In der Werkstatt zeigt ein Fenster jeden sichtbaren Text neben seiner Übersetzung und zählt, wie viele noch fehlen. WILLKOMMEN ZURÜCK hat so 921 von 931 Texten auf Englisch bekommen, die übrigen zehn sind Namen.

  50. AmigaEngine

    Durchgespielt auf echter Hardware

    Am Abend des 9. September kam ein automatischer Durchlauf zum ersten Mal durch das ganze SENDESCHLUSS. Dabei stieß er auf einen Absturz, den noch niemand gesehen hatte, weil noch niemand so weit gekommen war. Die Hauptschleife holt sich am Anfang eines Bildes den hinteren Zeichenpuffer und malt am Ende hinein. Wechselte dazwischen der Raum in einen anders breiten, wurden neue Puffer angelegt und die alten freigegeben, und der Rest des Bildes malte in Speicher, der schon wieder frei war. Sichtbar wurde das erst beim nächsten Speicherzugriff des Systems, als Guru oder als schwarz stehender Rechner. Nach der Korrektur lief das Spiel von der ersten bis zur letzten Szene durch.

    Am 10. September wurde SENDESCHLUSS dann auf der Vampire V4SA von Hand durchgespielt. Der erste Satz der Rückmeldung: keine Abstürze. Dazu kamen Hinweise, aus denen Regeln wurden. Nach dem Schluss gab es keinen Ausgang aus dem Spiel. Auf dem C64 ist der Ausschalter der übliche Weg, auf dem Amiga nicht. Jetzt gilt: Steht ein Bild, das kein Klick abräumt, und läuft kein Skript mehr, sind Menü und Mauszeiger wieder da. Außerdem steht „mit …“ in der Satzzeile nur noch hinter Verben, die im jeweiligen Spiel wirklich ein zweites Ding kennen. Das wird an den Skripten abgelesen, nicht an einer Liste, die jemand pflegen müsste.

  51. AmigaWerkstatt

    Zeiger, Schrift, Figuren und Musik

    Ein Abgleich mit dem C64-Editor, Befehl für Befehl und Menü für Menü, ergab zweierlei. Die Engine kann alles, was die C64-Engine kann, und drei Befehle mehr. Der Werkstatt aber fehlten vier Werkzeuge, und die Engine hatte ihre eigenen Sätze fest im Programm, sodass ein englisches Spiel ein deutsches Menü gehabt hätte. Das war der ernsteste Punkt und kam deshalb zuerst. Die vierzehn Texte der Engine, vom Satz beim Einstecken bis zu den Wörtern des Menüs, gehören jetzt dem Spiel, und jedes Spiel kann sie ersetzen.

    Dann kamen die Werkzeuge. Der Mauszeiger lag nicht einmal in einer Datei, sondern im Programm. Jetzt steht er in der Spieldatei und hat einen eigenen Maler. Der Zeichensatzmaler zeigt unter dem Raster eine Probezeile, weil ein Zeichen allein nichts sagt: Erst neben seinen Nachbarn sieht man, ob es zu eng steht. Der Figurenmaler malt nicht in die fertige Figurdatei, sondern in die Einzelbilder, aus denen sie gebaut wird, sonst wäre beim nächsten Bau alles wieder weg. Für Musik gibt es keinen eigenen Editor, sondern einen Import für MOD und XM. Was ein XM mehr kann als ein ProTracker-Modul, wird gemeldet und nicht erfunden.

  52. AmigaEngine

    Der Absturz nach dem Beenden

    Auf der V4SA fror der Rechner nach dem Beenden über das Menü ein oder zeigte eine Software Failure. Im Emulator war derselbe Weg sauber. Ein Protokoll sollte zeigen, wie weit das Beenden kommt, aber es kam keine Datei an, nicht einmal ein Bildschirmfoto, das lange vorher entstanden war. Also wurde zuerst geprüft, ob das Programm auf dieser Maschine überhaupt schreiben kann. Erst als eine Marke ankam, geschrieben bevor die Engine die Hardware übernimmt, war das Fehlen der zweiten Datei eine Auskunft. Eine Messung, die nichts liefert, muss zuerst sich selbst prüfen.

    Die Ursache war eine fehlende Zeile. Die Engine läuft minutenlang mit gesperrten Interrupts, während Paula ihre Tonkanäle weiterspielt, und deren Meldungen sammeln sich an. In dem Augenblick, in dem das Betriebssystem seine Interrupts zurückbekam, feuerten sie alle auf einmal, und zwar in die Handler des Audio-Treibers, der von diesen Kanälen nichts wusste. Jetzt werden die angesammelten Meldungen vorher gelöscht. Drei weitere Läufe auf der V4SA, ohne jede Messung und nur mit dieser Zeile: kein Guru.

  53. C64Werkstatt

    Koala-Bilder und Figuren importieren

    Die Werkstatt liest jetzt Koala-Dateien, das Austauschformat vieler C64-Malprogramme. Nichts wird skaliert und keine Farbe geraten — nur wo Koala in einer Zelle mehr Farben erlaubt als FABULA, muss eine weichen. Für Räume gibt es dazu einen Zuschnitt, der nicht verkleinert, sondern ausschneidet. Und Figuren muss man nicht mehr Punkt für Punkt malen: ein Bild importieren, die Werkstatt schlägt die Farben vor und zeigt neben jeder, wie viel sie tatsächlich färbt.

  54. AmigaWerkstatt

    Der Gesprächseditor

    Ein Gesprächssatz ließ sich in der Werkstatt gar nicht anlegen. Die Angaben eines Dings zählten nur, wie viele Sätze es hat. Wer ein Spiel mit Gesprächen bauen wollte, musste sie anderswo schreiben. Dabei war alles darunter fertig: Bau, Engine und Prüfung kannten Gespräche längst. Es fehlte die Oberfläche, und das war die größte Lücke gegenüber dem C64-Editor.

    Jetzt gibt es rechts eine vierte Karte neben Angaben, Skripte und Belebt. Ein eigenes Fenster wäre der falsche Ort, denn ein Gespräch gehört zu einem Ding wie sein Hotspot. Oben stehen die Sätze, darunter „nur wenn“, „solange nicht“, „nur einmal sagbar“ und „beendet das Gespräch“, und dann die Antwort. Die Antwort ist dieselbe Skriptansicht wie auf der Karte daneben. Ein zweiter, kleinerer Antworteditor hätte irgendwann weniger gekonnt als der große, und niemand hätte gewusst, warum. Am selben Tag wurde die Tür zu einem Feld wie auf dem C64, und „Benutze X mit Y“ lässt sich jetzt direkt anlegen.

  55. C64Werkstatt

    Ein Test, der das Spiel wirklich durchspielt

    Die Rätselprüfung sagt, dass sich ein Spiel lösen lässt. Ob die Sätze unterwegs zusammenpassen, sagt sie nicht. Dafür gibt es jetzt ein Prüfstück, das SENDESCHLUSS vom Titel bis zum Ende mit echten Klicks spielt und vor jedem Klick liest, was in der Satzzeile steht — wie ein Mensch. Einen Menschen ersetzt es trotzdem nicht: ob sich ein Satz wie eine Sackgasse anfühlt, merkt nur, wer davorsitzt.

  56. C64Werkstatt

    Ein Paket je System

    FABULA lässt sich jetzt als fertiges Paket bauen: für den Mac eine eigenständige App, für Apple Silicon und für Intel, für Windows ein Ordner, der ohne Installation startet. Das mitgelieferte SENDESCHLUSS wird auf allen drei Systemen zum selben Modul, Byte für Byte.

  57. C64Engine

    Was das Forum gefunden hat

    Ein Ding, das man allein benutzen kann, reagiert jetzt schon beim ersten Klick auf „Benutze“ — vorher wartete das Spiel immer auf ein zweites. Gibt es für dasselbe Ding auch eine Kombination, wartet es weiter, sonst käme niemand mehr zur Lösung. Und das Handbuch hat ein neues Kapitel „Geht das?“: sieben typische Wünsche, jeder mit dem kürzesten Skript, das ihn erfüllt, dazu ein Abschnitt darüber, was nicht geht.

  58. AmigaEngine

    SENDESCHLUSS zieht um

    Die ehrlichste Frage an Engine und Werkstatt ist nicht, ob eine Probe läuft, sondern ob ein fertiges Spiel läuft. Also wurde SENDESCHLUSS vom C64 herübergeholt: acht Räume, 58 Dinge, 385 Skriptbefehle. Alle 19 Befehlsarten, die es benutzt, gibt es auf beiden Seiten, und die Prüfung lief ohne eine Meldung durch. Was fehlte, ergab eine Liste von fünf Punkten, und die wurde am selben Abend abgearbeitet.

    Breite Räume rollen jetzt weich, Punkt für Punkt. Raum und Leiste liegen dafür in einer einzigen Bitmap untereinander, damit am Übergang nichts mehr umgeschaltet werden muss. Ob eine Figur hinter einem Geländer verschwindet, entscheidet eine Maske Punkt für Punkt und keine Farbregel, denn in einem gerasterten Bild mit 192 Farben liefert eine Farbregel ein Sieb statt eines Zauns. Figuren, Musik und alle acht Geräusche wurden aus den C64-Daten gerechnet. Was der SID je Bild verändert und Paula nicht kann, etwa Filter und Pulsbreitenmodulation, fällt weg. Die Räume bekamen einen Amiga-Anstrich: Aus denselben Bildern werden statt sieben rund 190 Farben, mit farbigen Schatten, Volumen und Lichtschein, ohne dass etwas dazuerfunden wird.

  59. AmigaEngine

    Die erste echte Maschine

    Bis hierher war der Emulator der einzige Richter. Seit dem 6. September läuft FABULA auch auf einer Vampire V4 Standalone. Sie ist nicht die Zielmaschine: Ein 68080 mit einem Gigabyte Speicher sagt über Ladezeiten auf einem A1200 nichts. Aber sie beantwortet die andere Frage, ob es überhaupt läuft.

    Das Laden lief auf Anhieb, samt Entpacken und stimmenden Prüfsummen. Die Engine dagegen blieb stehen. Der Rasterzähler meldete höchstens Zeile 262, die Maschine lief also in NTSC. Die ganze Anzeige ist aber auf PAL gebaut. Auf jedem NTSC-Amiga wäre dasselbe passiert, nur stand der Emulator auf PAL und konnte es nie zeigen. Jetzt stellt die Engine beim Start auf PAL um und beim Beenden wieder zurück, was vorher galt. Das wird am Rasterzähler gemessen, denn das zuständige Register lässt sich nicht lesen. Zwei Warteschleifen, die sich auf einer unerwarteten Maschine endlos gedreht hätten, haben eine Notbremse bekommen. Danach lief das Spiel dreißig Minuten ohne Unterbrechung, von Hand gespielt.

  60. AmigaWerkstatt

    Die Werkstatt entsteht

    Die Werkstatt ist ein Programm für moderne Rechner, geschrieben in Python mit Qt. Der Amiga bekommt das fertige Spiel, nicht das Werkzeug. Eine zweite Werkstatt auf dem Amiga hieße, dass dieselbe Logik zweimal existiert, für immer: Jeder neue Befehl und jede Prüfregel müsste in beide. Damit die Tür trotzdem offen bleibt, ist die Projektdatei ein schlichtes Blockformat, das auch ein anderes Werkzeug lesen könnte. Die Probe dafür: Aus der gespeicherten Projektdatei entsteht Byte für Byte dieselbe Spieldatei wie aus dem ursprünglichen Quelltext.

    Am selben Tag kamen Raumansicht, Skripteditor und Maleditor dazu. Die Raumansicht zeigt nicht das PNG, sondern das umgerechnete Raumbild, denn wer Hotspots auf ein Bild zieht, das es so im Spiel nicht gibt, liegt daneben. Der Maleditor malt auf Farbnummern und nicht auf RGB, weil ein Editor, der beim Speichern umrechnet, dem Zeichner die Farben ändert. Zum Schluss wurde die Werkstatt an sich selbst geprüft, mit einem Spiel, das von null an gebaut wurde. Sie fand eine Sackgasse: Ein frisch angelegtes Ding hatte keine Skripte, und die Liste zeigte nur vorhandene. Mit einem neuen Ding kam man also keinen Schritt weiter. Jetzt stehen dort alle Verben, die leeren mit „(noch leer)“. Bis zum Nachmittag folgten belebte Stellen, ein Rückgängig-Stapel für alles, Handbuch und Tastenliste im Fenster und eine englische Oberfläche.

  61. AmigaEngine

    Die ganze Engine läuft unter WHDLoad

    TheA500 Mini, MiSTer und die üblichen Sammlungen erwarten ein WHDLoad-Paket. FABULA hat dafür einen eigenen Slave bekommen, in Assembler, weil WHDLoad einen einzigen, vollständig verschiebbaren Programmblock verlangt. Dahinter läuft dieselbe Engine, nur ohne Betriebssystem und ohne C-Bibliothek gebaut: Dateien kommen über WHDLoad, Speicher über einen eigenen kleinen Verwalter. Raum, Figur, Leiste, Skripte, Inventar und der Raumwechsel mit Nachladen, Entpacken und Prüfsumme laufen alle. Ausgeliefert wird eine Schublade mit beiden Fassungen und einer einzigen Spieldatei.

    Am nächsten Morgen fiel auf, was noch nicht passte: Unter WHDLoad blieb der Schirm beim Raumwechsel zwölf Sekunden schwarz. Der erste Verdacht war das Chip-RAM, und der brachte acht Prozent. Der eigentliche Grund war der Befehlscache. WHDLoad schaltet ihn auf einem Rechner ohne MMU ab, damit alte Spiele laufen, die ihren eigenen Code verändern, und ein 68020 ohne Cache holt jeden Befehl einzeln aus dem Speicher. Der Slave schaltet jetzt den Befehlscache ein, den Datencache aber nicht, und bittet um Fast-RAM. Aus zwölf Sekunden wurden knapp drei.

  62. AmigaEngine

    Ein Bit, 54 Prozent weniger Zeit

    Am ersten Tag stand die Werkzeugkette im Projekt, und das erste AGA-Bild erschien auf dem Schirm: 320 × 256 Punkte in acht Bitplanes, jede Zeile in einer eigenen Farbe. Kurz darauf folgten ein echtes Raumbild mit 256 eigenen Farben, zwei Zeichenpuffer und eine Figur, die der Blitter maskiert und punktgenau setzt. Bis Mitternacht kamen Laufflächen, Wegsuche, Gehzyklus und Größe nach Tiefe dazu, dann die Bedienleiste unter dem Raum und ein Inventar mit Bildern wie in Monkey Island 2.

    Gemessen wurde von Anfang an, auf einem emulierten A1200 ohne Fast-RAM. Drei Figuren je Bild wegzuräumen und neu zu malen kostete 178 von 313 Rasterzeilen. Mit einem eigenen Palettenbereich, der den Figuren fünf statt acht Bitplanes lässt, waren es 129. Dann kam ein einziges Bit, das dem Blitter Vorrang vor der CPU am Chip-Bus gibt. Ohne dieses Bit nahm die Schleife, die auf den Blitter wartet, ihm genau die Zyklen weg, auf die sie wartete. Mit dem Bit waren es 59 Zeilen, also 54 Prozent weniger Zeit.

  63. C64Werkstatt

    Das Handbuch auf Englisch

    Das ganze Handbuch gibt es jetzt auch auf Englisch. Übersetzt wurde nicht Wort für Wort, sondern gegen die englische Oberfläche: jeder Befehl und jedes Feld heißt im Handbuch so, wie es auf dem Bildschirm steht.

  64. C64Engine

    SENDESCHLUSS ist da

    Das Spiel zur Engine gibt es ab heute kostenlos zum Herunterladen — als EasyFlash-Modul für den echten C64, den Ultimate 64 oder den Emulator. Acht Räume, gut eine halbe Stunde. Die Engine, mit der es gebaut ist, folgt später.

  65. C64Werkstatt

    Die Werkstatt ist ein richtiges Programm geworden

    FABULA startet jetzt wie jede andere Mac-Anwendung — mit eigenem Namen im Menü und eigenem Symbol, statt aus einem Terminalfenster heraus. Für die Arbeit ändert das nichts, für das Gefühl beim Benutzen alles.

  66. C64Engine

    SENDESCHLUSS ist einmal komplett durchgespielt

    Das kleine Beispielspiel ist zum Vorzeigespiel ausgebaut worden: ein Radiostudio, ein Keller, ein Dach, ein Anruf, der wirklich klingelt, und ein Ende, das nur findet, wer vorher unten war. Beim Durchspielen kamen fünf Unstimmigkeiten heraus — alle behoben. Ein Spiel, das man von vorn bis hinten spielen kann, ist der beste Prüfstein für eine Engine.

  67. C64Engine

    Die Maus zittert nicht mehr

    Im Emulator zuckte der Mauszeiger. Der erste Verdacht fiel auf den Emulator — falsch, wie sich zeigte. Gemessen wird jetzt am Bildanfang, und der Zeiger steht ruhig. Der Fehler und die vorschnelle Erklärung stehen beide im Handbuch.

  68. C64Werkstatt

    Viele kleine Ärgernisse in der Werkstatt

    Ein Rückgängig löschte ein ganzes Skript. Ein Knopf tat nichts. Beim Zeichnen sah man nicht, was man malt. Ohne Maus kam man nicht über das Intro hinaus. Solche Dinge fallen erst beim wirklichen Arbeiten auf — und sie sind der Grund, warum vor der Veröffentlichung noch einmal gründlich gespielt wird.

  69. C64Werkstatt

    Kein Java mehr nötig

    FABULA übersetzt seinen C64-Code jetzt mit einem selbst geschriebenen Werkzeug. Vorher brauchte es dafür Java und ein fremdes Programm — beides muss niemand mehr installieren, der später mit FABULA arbeitet. Dass der Tausch nichts verändert hat, ist bewiesen: Die fertigen Spiele sind Byte für Byte dieselben wie vorher.