Im C64 OS/GUI-Thread wurde mal angeregt, man könne doch (zumindest) ein GUI-Projekt in viel kleine Teilaufgaben zerlegen und erstmal gucken, ob man die in den Griff bekommt. Und da ergeben sich ja auch kleine nützliche Projekte, die man völlig losgelöst von einem GUI oder OS gut gebrauchen kann, z.B. auch für Games. Was ein Bitmap-GUI angeht, benötigt man zwingend ein paar Routinen, wie z.B. zum Zeichnen von (min. horizontalen) Linien (mit denen man dann auch Kästen füllen/löschen kann), eine Scrollroutine und auch eine Font-Render-Engine. Und die ist jetzt mein Thema:
Gäbe es interessierte Programmierer, die sich darauf einlassen würden, in einer Art Wettstreit zu versuchen, die schnellste und/oder RAM-sparendste Bitmap-Font-Render-Routine aller Zeiten für den C64 zu programmieren?
Und wie sollten die Regeln/Vorgaben lauten, damit das ganze fair und interessant abläuft? Was mir so als erster Vorschlag in den Sinn kommt: Die Routine sollte mit 8-Bit-kodierten Fonts umgehen können, deren einzelne Zeichen max. 8x8 px groß sind (also im Prinzip übliche 2K C64-Charsets, nur halt nicht unbedingt mit PETSCII-Belegung und nicht monospaced). Die Zeichen im Charset sind unterschiedlich breit und es soll nach jedem Zeichen eine freie Pixelspalte (ergo: Zeichenabstand) folgen (denkbar wäre auch eine zusätzliche Breiten-Tabelle, falls das beschleunigend wirken könnte). Die Ausgabe soll linksbündig erfolgen und am (einstellbaren) Zeilenende (max. 320 px Breite) soll ein Wortumbruch erfolgen. Sollte man den Zeilenabstand fest oder frei definieren? Und dann sollte man zur guten und fairen Messung mit einem vorgegebenen Text den Bildschirm 10x von der Routine füllen lassen (kein Scrolling). Neben dem zeitlichen Ergebnis zählt aber auch der RAM-Verbrauch – da weiß ich nur noch nicht, wie man den bewerten soll. Ich denke, man sollte auch die Speicherbereiche definieren, in denen die Routine, der Font und die Bitmap liegen sollen.
Was ich liefern könnte: In Zusammenarbeit mit interessierten Programmierern die Vorgaben festklopfen. Einen Zeichensatz liefern, der die Vorgaben erfüllt (ich habe einen proportionalen Zeichensatz im C64-Format – mit ASCII-Belegung). Einen Text, den alle Teilnehmer für die Zeitmessung nutzen können. Und ich würde mich um das Sammeln der Ergebnisse (bis zur Deadline geheim?) und Ausrufen des Gewinners kümmern. Einen Preis kann ich leider nicht bieten – die Ehre, die schnellste Font-Render-Routine aller Zeiten auf dem C64 programmiert zu haben, muss also reichen.
So, was haltet ihr davon – gibt es Interessenten für so einen Wettbewerb?
Hier noch ein Beispiel für so eine Text-Routine in einem Spiel:
Enchanter von Bit Shifter