JEM/C64

In hoffentlich naher Zukunft werde ich hier meinen C64-Emulator JEM veröffentlichen. Der Emulator ist Java-basiert und verfolgt einen individuellen Ansatz bei der Umsetzung. Mein Ziel war es, einen Emulator zu schreiben, der jede eigenständige Einheit als separaten Thread realisiert. Da eine Synchronisation von Threads auf Mikrosekunden-Basis mit Java nicht performant möglich ist, habe ich einen Realisierung mit sog. "Green Threads" gewählt. Dazu wird die Library "SerialThreads" verwendet, die mit ein bißchen ByteCode-Manipulation den Threadwechsel in Java realisiert. Der Nachteil bei dieser Realisierung ist, dass alle "Green Threads" in einem Java-Thread laufen. Das war aber nötig, um den Overhead, der bei Threadwechseln zwischen Java-Threads anfällt, zu vermeiden und eine akzeptable Ausführungsgesschwindigkeit zu erreichen.

Derzeitiger Stand ist, dass der C64 bootet, die Emulation der Custom-Chips aber nur rudimentär ist:

  • Die CIAs funktionieren. Sie sind aber wahrscheinlich weder 100% korrekt noch zyklusexakt
  • Der VIC hat einen funktionierenden Textmodus und einen rudimentären Grafikmodus. Sprites sind ebenfalls schon eingebaut. Die Funktionalität ist unvollständig, teilweise nicht korrekt und nicht zyklusexakt.
  • Die Emulation des SID existiert nicht. Ich bin am überlegen, JSidPlay dafür zu verwenden.