Für alle, die schon mal ihr eigenes SEGA-Spiel entwickeln wollten
- einfacher Einstieg,
- schnelle Erfolge,
- kostenlos und
- lauffähig auf der echten Retro-Hardware.
Und du musst dazu kein erfahrener Programmierer sein! Probier's doch mal aus! Auf geht's...
Teil 1 - Erstes Programm #
Im ersten Teil dieses Beitrags schauen wir uns die Grundlagen zum Sega Mega Drive (MD) an und wie man sich eine einfache Entwicklungsumgebung auf dem PC schafft. Danach lassen wir ein erstes, kleines Programm laufen.
Wir nutzen dafür das SGDK, ein kostenloses Framework, welches dir viel Arbeit abnimmt und aus dem Programmcode eine ROM-Datei für den Mega Drive bastelt.
Das erwartet dich in Teil 1:
- Mega Drive Grundlagen (ohne die geht es nicht)
- MD Spezifikationen und Systemarchitektur
- Bildaufbau und Ebenen
- Auflösung, Farben und Paletten
- Programme und initiale Einrichtung
- SGDK (Framework für Sega MD)
- Visual Studio Code
- Emulator (Gens, BlastEM)
- asprite (Pixelgrafiken erstellen)
- Erstes SEGA-Programm
- Unser erstes, lauffähiges Programm
- Grundlegender Codeaufbau in Spielen
Mega Drive Grundlagen (ohne die geht es nicht) #
Bevor wir loslegen müssen wir uns anschauen, was der Mega Drive so alles kann, und wo die Grenzen in der Hardware und im Bildaufbau liegen.
MD Spezifikationen und Systemarchitektur #
Das steckt im Mega Drive:


Bildaufbau und Ebenen #
Der Mega Drive hat grundlegend 4 Ebenen, die von hinten nach vorne der Reihenfolge nach auf dem Bildschirm gezeichnet werden. Hintergrund B, Hintergrund A, Sprites und Vordergrund. Die fünfte Ebene ist eher optional, ein statisches, festes Fenster, in dem man z.B. Highscores oder Status-Informationen ausgeben kann. Die Ebene werden wir in unserem Tutorial nicht nutzen.


Auflösung, Farben und Paletten #
Der Mega Drive kann auf dem Bildschirm eine Auflösung von PAL 320 x 240 Pixeln bzw. 320 x 224 (NTSC) Bildpunkten darstellen. Dabei ist der Nullpunkt/Ursprung oben links, d.h. X(0), Y (0) ist ganz oben links.

Die Farbpalette besteht aus 512 knalligen Farben (RGB) mit 3Bit pro Farbkanal. Man kann sich dabei aus 4 Paletten bedienen:

Auch beim Mega Drive wird gerne mit so genannten Tile-Maps gearbeitet, um einzelne Bildelemente wiederzuverwenden und um Speicherplatz zu sparen. Dabei ist die Mindestgröße eines "Tiles" 8x8 Pixel. Hier ein Beispie einer Map aus Sonic. Aus den einzelnen Teilen kann dann z.B. der Hintergrund, die Sprites und der Vordergrund, bis zum fertigen Bild, zusammengebaut werden:

Programme und initiale Einrichtung #
Jetzt richten wir mal unsere Entwicklungsumgebung so ein, dass wir starten können. Der Reihe nach...
SGDK (Framework für Sega MD) #
Das Herzstück für die Entwicklung ist hier das SGDK, ein Framework von Stephane D, welche viele Funktionen und Ansteuerungen auf die Hardware für euch übernimmt. Hier liegt auch der m68k-elf GCC-Compiler, der aus euren Code ein Mega Drive ROM für den 68000 Motorola-Prozessor erzeugt.
Ihr könnt es euch auf Github kostenlos herunterladen: https://github.com/Stephane-D/sgdk
Dort findet ihr euch eine gute Einführung in das Thema. Das Paket von Github enthält außerdem auch einige Beispielprogramme, die ihr euch anschauen könnt.
Jetzt gehen wir Schritt für Schritt durch. Ich beschreibe es der Einfachheit halber für das Windows-Betriebssystem:
- Ihr fangt also mit dem SGDK an. Wenn ihr es heruntergeladen habt, dann könnt ihr es auf euren PC in einem Ordner entpacken.
- Danach folgt ihr den Anweisungen auf der Github-Seite von Stephane: https://github.com/Stephane-D/SGDK/wiki
Wenn ihr es schon vorgefertigt haben wollt, könnt ihr es auch von uns, dem RCD, runterladen und entpacken. Dort ist dann schon alles vorbereitet und übersetzt. Zusätzlich enthalten ist der Emulator "Gens" und ein fertiges Template für Visual Studio Code:
Entpackt für dieses Tutorial hier das SGDK mal direkt in den Unterordner "C:\SGDK".
- Damit das SGDK später automatisch gefunden wird beim Bauen des Programms, braucht ihr im Windows noch eine Umgebungsvariable/Systemvariable namens "GDK". Dazu geht ihr im Windows in die Umgebungsvariablen und legt eine neue Systemvariable an: Variable "GDK" und Wert "C:/SGDK". Hier den Forwardslash beachten beim Wert.
Visual Studio Code #
Die Entwicklungsumgebung und der Editor für unseren Code ist "Visual Studio Code". Ladet euch den herunter und installiert ihn:
https://code.visualstudio.com/
WICHTIG: Nach der Installation brauchen wir im Visual Studio Code noch ein paar Erweiterungen, die wir bequem nachinstallieren können. Dazu VS Code starten und auf der linken Seite auf "Extensions" gehen:

Dort brauchen wir jetzt folgende Pakete, die wir über "Install" dazu installieren:
- C/C++ Extension Pack (von Microsoft)
- Genesis Code (von zerasul)
Emulator (Gens, BlastEM) #
Den Emulator benötigt ihr, damit ihr eure fertige ROM direkt auf dem PC ausprobieren und laden könnt. Ein "Gens" ist bereits bei dem SGDK.zip vom RCD enthalten. Ansonsten ladet euch den Gens Emulator herunter. Eine gute Alternative dazu ist "BlastEm".
asprite (Pixelgrafiken erstellen) #
Damit ihr Pixelgrafiken erstellen könnt benötigt ihr ein Programm, mit dem man Paletten laden kann und die Grafiken so pixeln kann, dass das der Mega Drive später auch versteht. Eines dieser Programme ist "asprite". Das ist unsere Empfehlung und ist für kleines Geld zu haben auf verschiedenen Plattformen, wie Steam oder auch direkt:
Erstes SEGA-Programm #
Nun wollen wir doch mal sehen, ob ein erstes Testprogramm funktioniert.
Unser erstes, lauffähiges Programm #
Legt euch auf dem PC einen Ordner an, wo ihr eure SEGA-Projekte ablegen wollt, z.B. C:\Projekte\SEGA. Dort drin könnt ihr ein ersten Ordner anlegen für das Testprojekt, z.B. "Bildschirmspiel01".
In den Bildschirmspiel01-Ordner kopiert ihr das "vscode_template" aus dem SGDK-Ordner (siehe oben, wenn ihr euch das SGDK vom RCD heruntergeladen habt)
Jetzt, da wir alles installiert und eingerichtet haben, können wir das Visual Studio Code öffnen, falls es nicht noch offen ist. Dort über "File" -> "Open Folder" den Bildschirmspiel01-Ordner öffnen.
Ihr seht nun bereits folgende Ordnerstruktur:

Terminal
- Öffnet im VS Code ein Terminal über "Terminal" -> "New Terminal"
- Danach stellt unten im Terminal das Default-Profile auf "Command Prompt", denn das Bauen und Ausführen eures SEGA-Programms läuft nur über die CMD (Eingabeaufforderung)
Emulator
- Drückt nun im VS Code STRG + Shift + P, um etwas auszuführen und gebt "Genesis Code" ein. Es tauchen automatisch mehrere Befehle auf
- Wählt zunächst "Genesis Code: Set Gens Emulator Command Path", um den Pfad zum Emulator zu setzen. Drückt Enter.
- Gebt jetzt den Pfad direkt in die Eingabe ein: "c:\sgdk\gens\gens"
Bauen und Ausführen
- Jetzt drückt wieder STRG + Shift + P, um etwas auszuführen
- Und gebt ein "Genesis", um die Genesis-Befehle zu filtern
- Wählt jetzt "Genesis Code: Compile & Run Project"
Hinweis: Falls ihr beim Ausführen kein "Genesis" seht, dann könnte das daran liegen, dass ihr erst "Trust Author" bestätigen müsst im VS Code.
Nun sollte im Terminal unten verschiedene Text ausgegeben und das Programm gebaut werden. Wenn es erfolgreich war öffnet sich sofort der Gens-Emulator mit der gebauten ROM und zeigt euch "Hello Sega!" an. Dann habt ihr es geschafft ! Euer erstes SEGA Programm läuft.
Im Ordner "src" in der Datei "main.c" seht ihr den Programmcode mit dem Befehl zum Ausgeben von "Hello Sega!"
Was das alles bedeutet und wie ihr jetzt eigenen Code hier reinbekommt behandeln wir in Teil 2 unserer Serie.Bei Fragen und Unklarheiten könnt ihr gern im Discord-Kanal "Sega" Fragen an mich (Jupi) stellen. Ich versuche sie dann zu beantworten. Oder kommt einfach bei uns im Verein vorbei - jeden Mittwoch, 18 Uhr
Bis bald!
Jupi



