Eigene CD³² Compilations erstellen...

[ 1. Teil - Version 1 von Michael Stum ]
Vorwort
Da ich jetzt auch ein CD32 habe will ich natürlich die ganzen Amiga Spiele auch auf dem CD32 spielen. Natürlich muss man dabei bestimmte Vorraussetzungen beachten:
# Ein CD32 basiert auf Kickstart 3.0
Aus diesem Grunde fallen einige alte Spiele (erstmal!) raus die ja nur unter Kickstart 1.3 richtig liefen.
# Ein CD32 hat weder Tastatur noch Maus!
Alles muss also mit dem Joypad realisierbar sein. Glücklicherweise gibt es im CD32 Developer Paket ein Programm um die Maus per Pad zu emulieren (näheres dazu später!)
# Ein CD32 hat kein Diskettenlaufwerk!
DF0: existiert nicht, demzufolge wird es ein Problem Spielstände zu speichern (Hierzu auch später noch mehr)
Ausgehend davon werde ich im folgenden 4 Spiele auf CD brennen und ein Menü einblenden in dem man per Knopfdruck wählen kann welches Spiel man will.
Benötigte Software
Folgende Software werde ich hier verwenden:
# Die 4 Spiele
Zak McKracken, Great Courts 2, Sensible World of Soccer, Defender of the Crown.
Diese 4 Spiele wurden willkürlich ausgesucht. Das waren halt die ersten 4 Spiele die ich auf Anhieb gefunden habe (ok, erst wollte ich Turrican 1-3 nehmen, aber das sind leider NDOS Disketten :( ).
# CD32 Joypad Treiber
Einmal ist da das Paket "CD32goodies.lha" aus dem Aminet. Es enthält das extrem nützliche Tool "Joypad" mit dem man die Joypad Buttons abfragen kann.
Zum anderen ist da das Programm "JoyMouse" aus dem CD32 Developer Paket. Es macht aus dem CD32 Joypad eine Maus! Das Steuerkreuz ist zum Bewegen, Roter und Blauer Knopf sind Linke und Rechte Maustaste.
# Sonstige Tools
"Assign" aus dem C: Verzeichnis einer Workbench 3.0 (oder höher) ist sehr Wichtig!
"FreeAnim" habe ich von der FEARS CD32 Version. Dieses Programm macht im wesentlichen nur eines: freeanim.library öffnen und schliessen, also die Animation beenden. Der Vorteil gegenüber RMTM liegt darin das FreeAnim ein CD32 Tool ist und die Konsole NICHT im CDTV Modus neu bootet!
Die Verzeichnisstruktur
Ok, jetzt wo ich alle Programme habe kann ich mich an die Aufteilung machen. Ich habe also ein neues Verzeichnis CD32TEST angelegt und dort folgende Verzeichnisse angelegt.
  • C
  • S
  • SWOS
  • DOTC
  • ZAK
  • GC2
  • Ins C Verzeichnis habe ich die Programme "Assign", "FreeAnim", "JoyMouse" und "Joypad" kopiert.
    Im S Verzeichnis liegt nur die Startup-Sequence.
    Im DOTC Verzeichnis sind 2 Unterverzeichnisse "Defender1" und "Defender2". Hier habe ich einfach die beiden "Defender of the Crown" Disketten reinkopiert.
    In die 3 anderen Verzeichnisse (SWOS, GC2 und ZAK) habe ich jeweils die 3 anderen Spiele einfach so reinkopiert - einfach alle Disketten in die Verzeichnisse kopieren und ggf. existierende Dateien überschreiben.
    Die Startup-Sequence
    In der Startup-Sequence müssen folgende Dinge abgearbeitet werden:
  • Beenden der CD32 Animation
  • Anzeigen des Menüs
  • Abfrage des Joypads
  • Starten der Spiele
  • Hier erstmal die Startup-Sequence, Erklärungen folgen später:
    ;CD32 Startup-Sequence
    ;Games:
    ;Sensible World of Soccer
    ;Defender of the Crown
    ;zak McKracken
    ;Great Courts II
    ;Assign DF0: to the CD32 - just in case
    ;ASSIGN DF0: CD0:
    ;Display the Menu
    echo "-----------------------------------------"
    echo " CD32 Game Collection Test 1"
    echo "-----------------------------------------"
    echo "Press RED for SENSIBLE WORLD OF SOCCER"
    echo "Press BLUE for DEFENDER OF THE CRWON"
    echo "Press GREEN for GREAT COURTS II"
    echo "Press YELLOW for ZAK MCKRACKEN"
    ;FreeAnim frees the Animation
    freeanim
    ;LOOP until a Joypad Button is pressed
    LAB loop
    joypad QUIET RED ; Sensi
    IF WARN
    ASSIGN SWOS: CD0:SWOS
    ASSIGN SWOS2: CD0:SWOS
    CD SWOS:
    ssboot swos
    ENDIF
    joypad QUIET BLUE ;Defender
    IF WARN
    ASSIGN Defender1: CD0:DOTC/Defender1
    ASSIGN Defender2: CD0:DOTC/Defender2
    run <>>NIL: joymouse
    CD Defender1:
    defender
    ENDIF
    joypad QUIET GREEN ;Great Courts II
    IF WARN
    ASSIGN Great_Courts_II: CD0:GC2
    CD Great_Courts_II:
    Great_Courts_II
    ENDIF
    joypad QUIET YELLOW ; Zak McKracken
    IF WARN
    ASSIGN "Zak 1:" CD0:zak
    ASSIGN "Zak 2:" CD0:zak
    run <>NIL: joymouse
    CD "Zak 1:"
    Zak
    ENDIF
    SKIP loop BACK
    So; sieht ja ganz nett aus :-)
    Von oben nach unten:
    Erstmal mache ich einen ASSIGN DF0: CD0:
    Das ist nur zur Vorsicht falls ein Spiel unbedingt auf DF0: zugreift. Dies hat aber 2 Nachteile:
  • Ich weiss nicht wie es sich mit einem SX-1/SX32 verhält
  • Da die Verzeichnisstruktur der CD für das Spiel unbekannt ist bringt das auch nicht viel

  • Dann gebe ich das Menü aus. Das geht über ECHOs ganz zweckmässig, wäre aber grafisch natürlich viel schöner :-)
    Anschliessend rufe ich FreeAnim auf. Das mache ich erst nach dem Menü damit man am Bildschirm nicht sieht wie das Menü ausgegeben wird sondern damit es "einfach da" ist.
    Anschliessend folgt eine Endlosschleife die immer nur die 4 Buttons abfragt.
    Joypad QUIET YELLOW gibt also Returncode 5 (WARN) wenn der Gelbe Knopf gedrückt ist.
    QUIET unterdrückt Bildschirmausgaben.
    Wenn also zum Beispiel der Gelbe Knopf gedrückt wurde (IF WARN) dann werden die beiden Zak McKracken Disketten auf mein zak Verzeichnis ASSIGNed. Anschliessend wird das Programm JoyMouse gestartet damit das CD32 Joypad wie eine Maus arbeitet. Dann geht der Spass los und wir befinden uns im Büro von Zak McKracken's Chef :-)
    Verbesserungen
    Meine Vorgehensweise hat einen Vorteil: Sie funktioniert!
    Aber sie hat VIELE Nachteile:
  • Joypad gibt eine Meldung "Unknown Controller Type" aus. Ich habe ein Competition Pro Pad (aka. Honey Bee) angeschlossen
  • Man muss den Knopf gedrückt halten da die 4 Überprüfungen hintereinander ablaufen
  • Die Spiele laufen nicht so... Great Courts II gibt nur Grafik Müll (Kann aber am Kickstart 3.0 liegen). Defender of the Crown meldet "Incomplete System". Das ist relativ einfach zu beheben in dem man einen C: Assign auf Defender1: setzt. Sensible World of Soccer startet garnicht :( Das liegt aber an dem Spiel und ist mit entsprechender Feinarbeit zu beheben
  • Spielstände speichern ist mangels Diskettenlaufwerk nicht möglich
  • Aufgrund des ASSIGN DF0: CD0: kann es Probleme mit SX1/SX32 geben
  • Ein CD32 ist Vorraussetzung, auf einem CDTV wird es nicht laufen

  • Auf jedenfall wird jetzt folgendes zu tun sein:
    Da der Joypad Quelltext offenliegt werde ich hier Modifikationen vornehmen damit der Check SOFORT erfolgt sobald ein Joypad Knopf gedrückt wird.
    Dann werde ich (irgendwann!) mal versuchen, das Non-Volatile RAM des CD32 als Spielstandersatz zu nehmen. Das wird aber mit Abstand am meisten Arbeit machen.
    Kompatiblität zum CDTV kann ich nicht sicherstellen. (Ausser jemand schenkt mir ein unmodifiziertes CDTV zum Testen :))
    Die CD erstellen
    So, jetzt wollen wir die CD ja Brennen.
  • Im CD32 Developer Paket befindet sich im ISO9660Tools_V1.04 Verzeichnis ein ISOCD Verzeichnis. Hier muss das Programm ISOCD gestartet werden (ohne Argumente)
  • In ISOCD klicken wir erstmal auf OPTIONS. Dort geben wir bei VOLUME ID den Namen der CD ein (könnt ihr selbst wählen, beachtet ISO Konventionen!). Rechts unten ist die Option TRADEMARK FILE. Dort klicken wir auf den Knopf rechts daneben und wählen CD32.TM
  • Nach einem Klick auf OK sind wir wieder im ISOCD Hauptmenü. Hier klicken wir auf den Knopf neben Source (links) und wählen unser CD32 Spiele Verzeichnis aus
  • Jetzt noch ein Klick auf Examine und dann auf BUILD. Ihr werdet gefragt wo das ISO IMAGE hin soll
  • Das fertige Image lässt sich mit jedem gängigen Brennprogramm brennen
  • Brennen, CD einlegen, Zak McKracken Spielen und auf den 2. Teil des Workshops warten :-)