PuCrunch
PuCrunch ist ein freier Cross-Cruncher bzw. Packer für Commodore-Computer, der von Pasi Ojala entwickelt wurde. Das Programm komprimiert ausführbare Dateien für den C64, C128 (im C64-Modus), VIC-20 sowie C16 und Plus/4 und erzeugt dabei selbstentpackende Programme (Self-Extractor). Die erste Version erschien 1997.
PuCrunch gehört zu den bekanntesten modernen Crunchern für Commodore-Systeme und wird häufig in Demos, Spielen und Entwicklungsprojekten eingesetzt. Aufgrund seiner hohen Kompressionsrate wird es oft mit anderen Packern wie Exomizer verglichen.
Eigenschaften[Bearbeiten | Quelltext bearbeiten]
PuCrunch verwendet einen hybriden Kompressionsalgorithmus aus:
- LZ77-Kompression
- Lauflängenkodierung (RLE)
- Elias-Gamma-Codierung zur effizienten Speicherung von Längen- und Offsetwerten
Dadurch werden oftmals bessere Kompressionsraten erzielt als mit älteren C64-Crunchern. Die Entpackroutine benötigt nur sehr wenig zusätzlichen Speicher und arbeitet direkt im Zielbereich (In-Place-Decompression).
Weitere Merkmale:
- Automatische Optimierung der Kompressionsparameter
- Erzeugung selbststartender PRG-Dateien
- Unterstützung mehrerer Commodore-Plattformen
- Verfügbar als Kommandozeilenwerkzeug für moderne Betriebssysteme
- Freie Lizenz (GNU LGPL für den Kompressor)
Verwendung[Bearbeiten | Quelltext bearbeiten]
PuCrunch wird typischerweise als Teil einer Cross-Development-Umgebung eingesetzt. Nach dem Assemblieren eines Programms wird die erzeugte PRG-Datei komprimiert:
pucrunch programm.prg programm-crunched.prg
Viele moderne Entwicklungsumgebungen wie Relaunch64 unterstützen PuCrunch direkt und können den Crunch-Vorgang automatisiert in den Build-Prozess integrieren.
Technischer Hintergrund[Bearbeiten | Quelltext bearbeiten]
Bei der Entwicklung wurde besonderer Wert auf folgende Eigenschaften gelegt:
- Hohe Kompressionsrate
- Kurze Entpackroutine
- Geringer Speicherverbrauch während des Entpackens
- Keine Beschädigung von BASIC- oder KERNAL-Variablen
- Unterstützung großer C64-Programme bis nahezu zum gesamten verfügbaren Speicherbereich
Die Entpackroutine benötigt keine zusätzlichen Datenstrukturen im RAM und arbeitet mit den bereits vorhandenen Speicherbereichen des Systems.
Geschichte[Bearbeiten | Quelltext bearbeiten]
Pasi Ojala begann Ende der 1990er Jahre mit der Entwicklung von PuCrunch. Das Projekt entstand aus dem Wunsch, einen modernen und leistungsfähigen Kompressor für den C64 zu schaffen. Die erste Version wurde am 14. März 1997 veröffentlicht, später folgten mehrere grundlegende Überarbeitungen und Optimierungen.
PuCrunch entwickelte sich rasch zu einem der leistungsfähigsten frei verfügbaren C64-Cruncher und wird bis heute in der Commodore-Szene eingesetzt.
Siehe auch[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Offizielle Projektseite von PuCrunch
- Compression Basics von Pasi Ojala