Screen2.0

 
 
 

interview // 2008.07.22 08:24:44 [hh]

Im Interview: ActionScript-Spezialist Claus Wahlers

Mit Claus Wahlers - Urheber des in Flash geschriebenen C64-Emulators "FC64" (wir berichteten), des Flash-basierten Browsers "Deng", sowie zahlreicher weiterer Open Source Projekte - sprach Screen2.0 über die Hintergründe seiner Flash- und Flex-Projekte.

Screen2.0: Claus, du hast unter anderem einen Web-Browser ("Deng"), eine ZIP-Library namens "FZip", einen AIR Remote Updater und zusammen mit Darron Schall einen C64-Emulator ("FC64") in ActionScript programmiert, die allesamt Open Source sind. Seit wann programmierst du in Flash und wie kamst Du dazu?

Claus Wahlers: Ich bin eigentlich "gelernter" C/C++ Programmierer und habe damals (in den 90ern) unter anderem OEM-Software für Modems (Fax, Anrufbeantworter, Homebanking-Software) entwickelt. Das wurde mir irgendwann zu langweilig, deshalb habe ich mich dann im wesentlichen auf DHTML-Programmierung spezialisiert. Richtig mit Flash angefangen habe ich um 1999/2000 herum. Ausschlaggebend dafür war einer meiner Kunden, der einen funky und sehr grafiklastigen Webauftritt haben wollte (es war das Plattenlabel International DeeJay Gigolo Records aus München). Das war meine erste Flash Site, der Flash Player 5 war grade released. Good old times. :)

Screen2.0: Was bringt einen dazu, einen C64-Emulator in Flash zu schreiben?

Wahlers: Der C64 war schuld daran, dass ich heute Programmierer bin. Meine Eltern haben mir Weihnachten 1984 einen damals sündhaft teuren 64er (mit Datasette) geschenkt. Nächtelange Spiel-Orgien folgten, und dann bald meine ersten Gehversuche zunächst in Commodore Basic V2 und dann in 6502 Maschinensprache. Man kann sagen, dass ich 1984 fast über Nacht zum Nerd geworden bin. Später habe ich mir dann sogar noch einen 300 Baud Akustikkoppler selbst gebaut (nach Plänen des CCC-Datenklos, für Eingeweihte) und mich in die Welt der BBSe gestürzt (das prähistorische Internet, sozusagen). Meine Eltern konnten das natürlich gar nicht nachvollziehen, und fanden ausserdem die rapide steigende Telefonrechnungen nicht ganz so lustig. :)


Claus Wahlers anno 1985

Sowas prägt natürlich, und es wird ja gesagt, dass ein gestandener Programmierer in seiner Laufbahn mindestens entweder ein Spiel oder einen Emulator geschrieben haben sollte, also habe ich damit schon immer geliebäugelt. Mit dem Release des Flash Players 8.5 (ByteArrays, neue und schnelle VM) wurde es dann erstmals zumindest theoretisch möglich, sowas wirklich in Flash zu realisieren.

Ich habe dann irgendwo einen Blog Artikel gelesen, in dem es um die Emulation irgendeines experimentellen Prozessors in Flash ging. Ich habe dann kommentiert, dass es ja eigentlich möglich sein sollte in FP8.5 einen 6502 (und eventuell sogar einen ganzen C64) zu emulieren, woraushin sich dann Darron Schall meldete, der zu dem Zeitpunkt schon einen halbwegs lauffähigen NES Emulator (fast gleicher Prozessor wie der C64) fertig hatte. Das war der Startschuss. :)

Im Endeffekt wollten wir natürlich rausfinden, ob der Flash Player schnell genug ist um eine halbwegs fortgeschrittene 8-Bit-Hardware wie den C64 zu emulieren.

Screen2.0: Was war die größte Herausforderung bei der Implementierung?

Wahlers: Zunächst mal muss man natürlich zwei Systeme einigermassen perfekt beherrschen, sonst kommt man nicht allzuweit: Das emulierende System (hier Flash Player) und vor allem das emulierte System (hier C64). Wenn du nicht weisst wie ein C64 intern genau funktioniert, und z.B. von Assembler keine Ahnung hast, musst du erstmal viel lesen und lernen. Glücklicherweise gibt es noch sehr viel Dokumentation zu dem Thema, und meine C64 Skills waren auch noch in ein paar vergessenen Hirnwindungen präsent, also war das nicht so das Problem.

Ich glaube die grössten Herausforderungen waren die Subsysteme neben dem Prozessor, die es zu emulieren galt. Generell Speichermanagement zum Beispiel: Der C64 hat 64kb RAM, was aber in bestimmten Bereichen von ROMs und I/O Registern überlagert wird. Das ganze kann man konfigurieren, d.h. man kann im C64 ROMs ein und ausblenden. Das transparent in Actionscript abzubilden war nicht ganz so einfach. Ausserdem natürlich die Emulation des Grafikchips, der sehr viele Schweinereien zulässt (Rasterinterrupts, pixelweises verschieben des Bildschirminhalts für smooth scrolling, Sprites, etc pp).

Übrigens, Performance war nicht wirklich eine Herausforderung. Ich habe etwas am Prozessor rumoptimiert, und beim Grafikchip auch, aber FC64 lief eigentlich fast von Anfang an schneller als die emulierte Original-Hardware.

Screen2.0: Wie geht es weiter mit diesem Projekt?

Wahlers: Die FP10 alpha ist draussen, und da gibts nette Sachen wie Typed Arrays (Vector) die Performance nochmal steigern werden, und natürlich, Andre Michelle und Joa Ebert sei Dank, dynamische Sound-Generierung, so dass wir dann auch endlich die Emulation des Soundchips (SID) angehen können.

Ausserdem war mal eine webbasierte C64 IDE in Planung, komplett mit Debugger, (Dis)Assembler, Grafik Editor und allem Schickimicki. Wenn ich mal Zeit habe... ;)

Screen2.0: Was war die Vision hinter "DENG"?

Da könnte ich Bücher schreiben.

Ursprünglich brauchte ein Freund von mir damals einen clientside, crossbrowser XForms Renderer, und ich habe mit deklarativen Web-Desktop Engines rumexperimentiert. Das war durchaus verwandt, und so haben wir uns eines Abends auf eine Sportzigarette zusammengesetzt, und DENG war geboren.

Meine persönliche Vision hinter DENG ist eine deklarative, clientseitige, zeroinstall crossbrowser und crossplatform Rendering Engine zu haben, die komplett auf offene Web Standards aufgebaut ist und auf dem Flash Player läuft. Eine modulare Browser Engine im Browser also. Anwendungsgebiete wären neben "HTML in Flex" natürlich CMSe, Web Desktops und so einiges mehr.

DENG ist 6 Jahre alt aber immer noch hochaktuell imho. Irgendjemand muss nur das Ding mal auf Actionscript 3 porten, bzw umschreiben. Wenn ich mal Zeit habe... ;)
Falls jemand Interesse dran hat das mit mir durchzuziehen: Bitte unbedingt melden! Aber Vorsicht: Das ist höllisch viel Arbeit.

Screen2.0: Was sind deine primären Tools, mit welchen du täglich arbeitest?

Wahlers: Im Wesentlichen: Messer, Gabel, Löffel, Flash CS3, FlashDevelop, Flex Builder, PureMVC, SVN (Subversion), Git.

Screen2.0: Was sind denn Deine liebsten Quellen zu Flash, Flex und ActionScript 3?

Wahlers: Ich lese viel AXNA, und somit viele Blogs. Das deckt das Meiste ab. Bücher zu den Themen lese ich so gut wie gar nicht.

Screen2.0: Du hast eine Agentur namens "côdeazur" im brasilianischen São Paulo? Wie hat es Dich dort hin verschlagen?

Wahlers: Meine Frau ist Brasilianerin, wir haben 5 Jahre lang zusammen in München gewohnt, bis uns Deutschland generell so auf die Nerven gegangen ist, dass wir Reissaus genommen haben. Wir haben es bislang nicht bereut, ganz im Gegenteil.

Screen2.0: Welche Art von Projekten realisiert "côdeazur"?

Wahlers: Generell machen wir alles was irgendwie mit dem Web zusammenhängt. Von Ajax, Flex und Flash über Mobile Solutions bis zu state-of-the-art distributierten, hochperformanten und skalierenden Backends (RoR, Python, etc).

Zur Zeit arbeiten wir an einer Social Network Platform für Musik namens AUPEO. Das wird uns noch einige Zeit beschäftigen, geht wahrscheinlich irgendwann Anfang nächstes Jahr public und wird einige seriöse Popos treten. Ich sag nur open source AIR Client, Rails unter der Haube, komplette offene REST APIs und einiges mehr. Lass dich überraschen :)

Screen2.0: Was dürfen wir denn in Zukunft aus dem "côdeazur" Labor erwarten?

Wahlers: Ich habe grade einige nette Flash/Flex Klassen in Arbeit, zum Beispiel eine standard gettext-basierte Internationalisierungslösung für AIR und FP die ganz nett ist. Ich glaube die release ich als nächstes. Ansonsten: Schaunmermal :)

 

Werbung