Benutzer:Stephan64

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Über mich[Bearbeiten | Quelltext bearbeiten]

Mein erster Computer war 1984 ein Commodore 64 mit Datasette, den ich an einem klobigen und stellenweise unscharfen Schwarzweiß-Fernseher betrieben habe - und auf dem ich mit Begeisterung Spiele, aber auch Lernprogramme und Numerik-Routinen entwickelt habe.
Wenige Jahre später konnte ich mir schon - unter anderem vom Erlös meines Spiels Pole Position, das ich in der Zeitschrift Homecomputer veröffentlicht habe - einen Commodore 128D samt Farbmonitor Commodore 1901 leisten. Und während meiner Ausbildung (Diplomstudium Wirtschaftsinformatik und Promotion) und meiner beruflichen Tätigkeit (Softwareentwickler bei einem großen Automobil-Zulieferer) begegneten und begegnen mir natürlich viel leistungsfähigere Computer in Hülle und Fülle - trotzdem ist der C64 immer noch der Computer, der mich auch heute noch am meisten fasziniert. Und meine Erfahrungen aus bald vier Jahrzehnten Beschäftigung mit diesem faszinierenden Gerät möchte ich nach und nach in meine Artikel einfließen lassen.

Meine Projekte rund um den Commodore 64[Bearbeiten | Quelltext bearbeiten]

Commodore 64-Emulator "Y64" (Yet another Commodore 64 emulator)[Bearbeiten | Quelltext bearbeiten]

Schon 1991 kam ich auf die Idee, dass sich ein Commodore 64 doch auch auf einem PC emulieren lassen müsste. Da mein damaliger Rechner nur über einen 80286-Prozessor verfügte, ist dieser Emulator bis heute komplett in handoptimiertem Intel x86-Assembler geschrieben (rund 40.000 Zeilen Quellcode) und damit extrem schnell und kompakt.
Jahre später musste ich erkennen, dass auch andere C64-Fans ähnliche Ideen hatten, und habe meinen Emulator daher irgendwann "Y64" (Yet another Commodore 64 emulator) getauft. Da der Emulator sich nur unter MS-DOS im Real Address Mode starten lässt (während des Betriebs dann aber in den Protected Mode schaltet und die verschiedenen Speicherkonfigurationen des C64 über Paging emuliert), wird er wohl für immer ein Exot und ein Nischenprodukt bleiben - allerdings mit Fähigkeiten, die sich mancher C64-Fan vielleicht schon seit langem für seinen C64 und vielleicht auch für einen Emulator gewünscht hat...

Kopplung meines C64-Emulators mit einem Arduino[Bearbeiten | Quelltext bearbeiten]

Wer heute maschinennahe Programmierung auf einem 8 Bit-System erlernen möchte, wird wahrscheinlich in den seltensten Fällen dafür einen C64 einsetzen, sondern eher ein Arduino-Prototypenboard. Da ist es doch naheliegend, einmal einen (emulierten) C64 und einen Arduino zu einem "generationen-übergreifenden Dialog" zu koppeln:

Kopplung zwischen meinem C64-Emulator "Y64" und einem Arduino Mega 2560 während des Spiels "Starquake".

Dabei kann der Arduino auf den Hauptspeicher und alle I/O-Bausteine des emulierten C64 zugreifen und deren Speicherinhalte manipulieren, verarbeiten oder mitprotokollieren. Das obige Bild demonstriert eine solche Kopplung, während auf dem C64 das Spiel "Starquake" ausgeführt wird: Der obere Teil des auf den Arduino aufgesteckten TFT-Bildschirms zeigt den Bildschirminhalt des C64, der untere Teil eine symbolische Darstellung des Spielplans (erforschte Räume grün, noch nicht besuchte Räume rot).

Kopplung meines C64-Emulators mit dem Mess- und Kalibriersystem INCA[Bearbeiten | Quelltext bearbeiten]

INCA ist ein Software-Werkzeug zur Motorenentwicklung, das in der Automobilindustrie weit verbreitet ist. Da ich beruflich unter anderem kundenspezifische Erweiterungen für INCA implementiere und neue Messgeräte integriere, lag es nahe, auch meinen C64-Emulator als "Messgerät" in INCA einzubinden:

Screenshot einer Kopplung zwischen meinem C64-Emulator "Y64" und dem Messsystem INCA während des Spiels "Gribbly's_Day_Out"

Bei dieser Kopplung liest INCA periodisch Spielparameter, wie etwa die Position der Spielfigur, aber auch Energie, Punktzahl oder Anzahl Leben über eine serielle Schnittstelle aus dem C64-Hauptspeicher im Emulator aus und stellt sie als Messwerte dar. Insbesondere beim Durchstreifen großer Labyrinthe ist es sehr hilfreich, die Position des Charakters innerhalb des gesamten Spielplans verfolgen zu können (im abgebildeten Beispiel ist die Spielfigur rechts unten in der Höhle der Gribblets).

Rekonstruktion der Musiknoten zu Melodien aus C64-Spielen[Bearbeiten | Quelltext bearbeiten]

Mein C64-Emulator unterstützt das gezielte Mitprotokollieren von Zugriffen auf die emulierten I/O-Bausteine des Commdore 64. Besonders interessant ist dies bei Schreibzugriffen auf den Soundchip, anhand derer sich ohne großen Aufwand die Noten einer Melodie rekonstruieren und in ein geeignetes Dateiformat (beispielsweise ABC) überführen lassen.

Musiknoten zum C64-Spiel Robin of the Wood, rekonstruiert durch Mitprotokollieren aller Schreibzugriffe auf den SID

Ganz nebenbei lässt sich dabei noch einiges über die Programmiertechniken der Spieleentwickler lernen. So wird beispielsweise die hier dargestellte Melodie mit den für NTSC gültigen SID-Frequenzparametern abgespielt, erklingt also auf der PAL-Version des C64 fast einen Halbton tiefer als beabsichtigt. Bei anderen Spielen beruhen die Frequenzparameter dagegen auf einem mehr oder weniger stark gerundeten Systemtakt, bei Burnin' Rubber beispielsweise auf einer Frequenz von 1,000 Mhz.