plus4emu – Der C/C++-Ritt durch die Hölle
Commodore plus4 Retrokram C C++ Mac Emulator Programming 26.06.2026
Eigentlich war das Ganze überhaupt nicht geplant.
Während wir auf neue Testpakete für den MeDFLIstvan Editor warteten, entstand plötzlich die Idee:
_"Wenn wir gerade sowieso einen Mac mit funktionierender Entwicklungsumgebung haben ... könnte man doch eigentlich auch gleich den plus4emu kompilieren."_
Schließlich stammt der Emulator ebenfalls von István Varga und gilt bis heute als einer der präzisesten Commodore Plus/4 Emulatoren überhaupt.
Also schnell das Repository geklont.
Was sollte schon schiefgehen?
Erste Runde: FLTK sagt Nein
Der erste Buildversuch endete nach wenigen Sekunden.
Kein Problem.
FLTK war bereits installiert.
Nur wusste das Buildsystem offenbar nichts davon.
Also begann die Fehlersuche.
Homebrew.
Include-Pfade.
Library-Pfade.
Eigentlich war alles vorhanden.
Nur SCons behauptete weiterhin hartnäckig das Gegenteil.
Willkommen in der SConstruct
Irgendwann war klar:
Nicht das System war das Problem.
Das Build-Skript selbst musste angepasst werden.
Also wurde die
Eigentlich wollte ich dort nur kurz nachsehen.
Am Ende hatten wir:
Aus einem "mal kurz kompilieren" wurde langsam ein chirurgischer Eingriff am Buildsystem.
Boss Nummer zwei bis fünf
Kaum war FLTK erledigt, erschienen die nächsten Gegner.
Dann:
Danach:
Und als endlich fast alles kompiliert war:
An diesem Punkt wurde deutlich:
Der eigentliche Gegner war längst nicht mehr der Emulator.
Es war das Buildsystem.
Jedes gelöste Problem brachte zuverlässig das nächste hervor.
Schritt für Schritt Richtung Ziel
Anstatt aufzugeben, arbeiteten wir uns einfach weiter durch.
Ein Paket nach dem anderen.
Eine Fehlermeldung nach der anderen.
Homebrew lieferte die Bibliotheken.
Die SConstruct-Datei bekam weitere Anpassungen.
SDL wurde auf die aktuelle macOS-Installation angepasst.
Irgendwann hatte man das Gefühl, nicht mehr den Emulator zu bauen, sondern das komplette Buildsystem umzuerziehen.
Der schönste Satz des Tages
Nach unzähligen Fehlermeldungen erschien schließlich:
Fast schon ungewohnt.
Kein "error".
Kein "package not found".
Einfach fertig.
Der Emulator war tatsächlich erfolgreich für Apple Silicon kompiliert.
Und dann wartete die nächste Überraschung
Der Emulator startete. 🤩
Allerdings erschien zunächst nur die bekannte Meldung, dass die Commodore-ROMs fehlen würden.
Also kurz in den Projektordner geschaut.
Und tatsächlich:
Der komplette
Einfach den Pfad einstellen.
Neustart.
Dieser Moment war wahrscheinlich das eigentliche Highlight des gesamten Projekts.
Nach Stunden voller Buildfehler erschien plötzlich wieder genau derselbe Startbildschirm, den ich Jahrzehnte zuvor auf echter Commodore-Hardware gesehen hatte.
Fazit
Rückblickend war das wahrscheinlich eines der verrücktesten "Nebenprojekte", die ich je gestartet habe.
Eigentlich wollten wir lediglich die Zeit überbrücken, bis neue Testversionen des MeDFLIstvan Editors eintrafen.
Stattdessen kompilierten wir unterwegs noch den Emulator seines Autors komplett neu für Apple Silicon.
Was als kleiner Zeitvertreib begann, entwickelte sich zu einem echten C/C++-Abenteuer voller Homebrew-Pakete, Build-Skripte, Linkerfehler und SCons-Eigenheiten.
Und trotzdem hat sich jede Minute gelohnt.
Denn am Ende stand wieder dieser eine Bildschirm:
Manchmal reicht genau das, um sich für einen kurzen Moment wieder wie der Junge zu fühlen, der damals zum ersten Mal einen Commodore Plus/4 eingeschaltet hat.
Während wir auf neue Testpakete für den MeDFLIstvan Editor warteten, entstand plötzlich die Idee:
_"Wenn wir gerade sowieso einen Mac mit funktionierender Entwicklungsumgebung haben ... könnte man doch eigentlich auch gleich den plus4emu kompilieren."_
Schließlich stammt der Emulator ebenfalls von István Varga und gilt bis heute als einer der präzisesten Commodore Plus/4 Emulatoren überhaupt.
Also schnell das Repository geklont.
Was sollte schon schiefgehen?
Erste Runde: FLTK sagt Nein
Der erste Buildversuch endete nach wenigen Sekunden.
Checking for package FLTK... no* error configuring FLTKKein Problem.
FLTK war bereits installiert.
Nur wusste das Buildsystem offenbar nichts davon.
Also begann die Fehlersuche.
pkg-configfltk-configPKG_CONFIG_PATHHomebrew.
Include-Pfade.
Library-Pfade.
Eigentlich war alles vorhanden.
Nur SCons behauptete weiterhin hartnäckig das Gegenteil.
Willkommen in der SConstruct
Irgendwann war klar:
Nicht das System war das Problem.
Das Build-Skript selbst musste angepasst werden.
Also wurde die
SConstruct Datei geöffnet.Eigentlich wollte ich dort nur kurz nachsehen.
Am Ende hatten wir:
- zusätzliche Include-Pfade
- Library-Pfade ergänzt
- Homebrew-Verzeichnisse eingetragen
- Debug-Ausgaben eingebaut
- einzelne Paketprüfungen teilweise umgangen
Aus einem "mal kurz kompilieren" wurde langsam ein chirurgischer Eingriff am Buildsystem.
Boss Nummer zwei bis fünf
Kaum war FLTK erledigt, erschienen die nächsten Gegner.
Checking for package sndfile... noDann:
Checking for package PortAudio... noDanach:
SDL/SDL.h file not foundUnd als endlich fast alles kompiliert war:
ld: symbol(s) not found for architecture arm64An diesem Punkt wurde deutlich:
Der eigentliche Gegner war längst nicht mehr der Emulator.
Es war das Buildsystem.
Jedes gelöste Problem brachte zuverlässig das nächste hervor.
Schritt für Schritt Richtung Ziel
Anstatt aufzugeben, arbeiteten wir uns einfach weiter durch.
Ein Paket nach dem anderen.
Eine Fehlermeldung nach der anderen.
Homebrew lieferte die Bibliotheken.
Die SConstruct-Datei bekam weitere Anpassungen.
SDL wurde auf die aktuelle macOS-Installation angepasst.
Irgendwann hatte man das Gefühl, nicht mehr den Emulator zu bauen, sondern das komplette Buildsystem umzuerziehen.
Der schönste Satz des Tages
Nach unzähligen Fehlermeldungen erschien schließlich:
scons: done building targets. 🥳Fast schon ungewohnt.
Kein "error".
Kein "package not found".
Einfach fertig.
Der Emulator war tatsächlich erfolgreich für Apple Silicon kompiliert.
Und dann wartete die nächste Überraschung
Der Emulator startete. 🤩
Allerdings erschien zunächst nur die bekannte Meldung, dass die Commodore-ROMs fehlen würden.
Also kurz in den Projektordner geschaut.
Und tatsächlich:
Der komplette
roms-Ordner lag bereits im Repository.Einfach den Pfad einstellen.
Neustart.
COMMODORE BASIC V3.5
60671 BYTES FREE
READY. (plus blinkender Cursor 🫡)Dieser Moment war wahrscheinlich das eigentliche Highlight des gesamten Projekts.
Nach Stunden voller Buildfehler erschien plötzlich wieder genau derselbe Startbildschirm, den ich Jahrzehnte zuvor auf echter Commodore-Hardware gesehen hatte.
Fazit
Rückblickend war das wahrscheinlich eines der verrücktesten "Nebenprojekte", die ich je gestartet habe.
Eigentlich wollten wir lediglich die Zeit überbrücken, bis neue Testversionen des MeDFLIstvan Editors eintrafen.
Stattdessen kompilierten wir unterwegs noch den Emulator seines Autors komplett neu für Apple Silicon.
Was als kleiner Zeitvertreib begann, entwickelte sich zu einem echten C/C++-Abenteuer voller Homebrew-Pakete, Build-Skripte, Linkerfehler und SCons-Eigenheiten.
Und trotzdem hat sich jede Minute gelohnt.
Denn am Ende stand wieder dieser eine Bildschirm:
READY.Manchmal reicht genau das, um sich für einen kurzen Moment wieder wie der Junge zu fühlen, der damals zum ersten Mal einen Commodore Plus/4 eingeschaltet hat.