Unter der Haube

Ein Spiel, neun Fassungen.

Kestrel läuft auf aktuellen Rechnern ebenso wie auf Amiga, Atari Falcon und DOS-PCs der 90er. Alle Fassungen entstehen aus demselben C++-Quelltext – programmiert von Claude (Claude Code by Anthropic), gebaut und getestet auf einem einzigen Mac.

9Fassungen aus einem Quelltext
4Prozessor-Architekturen: x86-64, ARM64, i386, Motorola 68k
256Farben auf Amiga, Falcon und DOS
1Mac, auf dem alles gebaut wird

Aufbau

Drei Schichten, nur die unterste ist je System neu.

SpiellogikC++17 · alle Fassungen

Regeln, Levels, Texte (DE/EN), Computerspieler, Leveleditor, Bestenliste

Darstellungzwei Wege

Mac, Windows, Linux: olcPixelGameEngine in Truecolor · Amiga, Falcon, DOS: eigene Darstellung in 256 Farben mit Ebenen, die nur Geändertes neu zeichnet

Plattformschichtje System

Bildschirm, Tastatur, Joystick, Ton, Dateien – das Einzige, was für jedes System neu geschrieben wurde

Die Fassungen

System, Sprache, Bibliotheken, Grafik und Ton.

macOS

Desktop
Zielsystem
macOS 11+, Apple Silicon und Intel (Universal Binary)
Sprache & Compiler
C++17, Apple clang
Bibliotheken
olcPixelGameEngine (GLUT/OpenGL), miniaudio (CoreAudio), stb_image
Grafik
640 × 400, Truecolor, OpenGL, Vollbild oder Fenster
Ton
MP3-Musik, im Code erzeugte Geräusche (miniaudio)

Windows

Desktop
Zielsystem
Windows 10/11, 64 Bit
Sprache & Compiler
C++17, MinGW-w64 (GCC) als Cross-Compiler auf dem Mac, statisch gelinkt
Bibliotheken
olcPixelGameEngine (Win32/OpenGL/GDI+), miniaudio (WASAPI), stb_image
Grafik
wie macOS
Ton
wie macOS

Linux

x86_64 & ARM64
Zielsystem
PC, Steam Deck, Raspberry Pi 4/5 (64 Bit); glibc ab 2.35
Sprache & Compiler
C++17, GCC 11 in Docker (Ubuntu 22.04), C++-Laufzeit statisch
Bibliotheken
olcPixelGameEngine (X11/OpenGL), miniaudio (PipeWire/PulseAudio/ALSA), stb_image
Grafik
wie macOS, unter X11 oder XWayland
Ton
wie macOS

Amiga

AGA & OCS/ECS
Zielsystem
AGA: A1200/A4000/CD32 ab 68020, 2 MB Chip-RAM · OCS/ECS: A500/A600/A2000 mit 68020+ und 4 MB Fast-RAM
Sprache & Compiler
C++17 und 68k-Assembler; amiga-gcc (bebbo), vasm; libnix
Bibliotheken
eigene Laufzeit und SoftFloat, ptplayer (ProTracker-Player)
Grafik
320 × 256; AGA 256 Farben (8 Bitplanes, C2P in Assembler, Hardware-Sprites), OCS 64 Farben (Extra-Halfbrite)
Ton
Paula: MOD-Musik und Samples

Amiga WHDLoad

Festplatte
Zielsystem
Amiga mit 68020+ und Fast-RAM, WHDLoad 17+, Kickstart-3.1-Abbild
Sprache & Compiler
Slave in 68k-Assembler (vasm), dazu das Amiga-Programm
Bibliotheken
WHDLoad (kick31-Emulation)
Grafik
wie Amiga
Ton
wie Amiga

Atari Falcon 030

68030 · 16 MHz
Zielsystem
Falcon 030, 4 MB RAM, TOS 4.0x oder EmuTOS, VGA oder RGB
Sprache & Compiler
C++17 und 68030-Assembler; m68k-atari-mintelf-gcc (GCC 15), mintlib
Bibliotheken
eigenes SoftFloat, eigener Mixer und MOD-Player
Grafik
VIDEL 320 × 240 (RGB 384 × 240), 256 Farben, C2P in Assembler
Ton
DMA-Sound 8 Bit mono 12,3 kHz: Musik von Platte gestreamt, Geräusche im VBL gemischt

MS-DOS

386 · 486
Zielsystem
386DX/33 mit 387 (empfohlen 486DX2/66), 4 MB RAM, VGA, Sound Blaster optional
Sprache & Compiler
C++17; DJGPP (GCC 12, 32 Bit Protected Mode), CWSDPMI eingebettet, EMU387 für Rechner ohne FPU
Bibliotheken
Mixer der Falcon-Fassung
Grafik
Mode X 320 × 240, 256 Farben, zwei Bildseiten
Ton
Sound Blaster 2.0/Pro/16: Auto-Init-DMA, 8 Bit mono ~12,3 kHz, Geräusche im Interrupt gemischt

Werkzeuge

Daten

Grafiken (PNG) und Musik (MP3) der PC-Fassung. Python-Werkzeuge wandeln sie für die Retro-Fassungen um: Bilder mit Palette (.kim), Geräusche (sfx.dat), MODs für den Amiga, RAW-Samples per ffmpeg.

Bauen

Make und Cross-Compiler auf dem Mac. Ein Befehl (make dist-all) baut alle Pakete: Mac, Windows, Linux, ADF, WHDLoad, Falcon als ZIP und auf Disketten, DOS.

Testen

FS-UAE (Amiga), Hatari (Falcon), DOSBox-X (DOS), Docker mit virtuellem Bildschirm (Linux) und ein Simulator der Amiga-Darstellung auf dem Mac.

Website

HTML, CSS und JavaScript ohne Framework, PHP ohne Datenbank für den Download-Zähler. Keine Cookies, YouTube erst nach Klick.