Fun with Commodore 64 & NES


Emulation is the process of imitating the behavior of an electronic system, in a different system. In particular, emulation of computers and video game consoles allows us, for example, to run old software in newer machines.

Different emulators can be found for almost every computer and video game console in existence, but for many reasons they were historically developed in low level, statically-typed languages. They are often developed with high performance as a priority, and that usually leads to obscure and less flexible designs.

With time, computers became faster, to a point in which we can develop emulators in higher level languages, running at 100% speed and with a great level of compatibility.

In this presentation I'm going to show emulators for two systems from the 8-bit era: one of them is a home computer, the Commodore 64, including it's most common peripherals. The other one is a video game console, the Nintendo Entertainment System.

I'm also going to present an overview of the framework in which these two emulators were made, which is called Retrobjects. It allows easy creation of new emulators in a dynamic environment.

Almost everything has been written in Smalltalk (using the VisualWorks dialect), and only very specific things were made in C.


My name is Gabriel Honoré, I live in Buenos Aires, Argentina, and I'm a Computer Science student at Universidad de Buenos Aires.

I became very interested in the objects paradigm, along with Smalltalk, at University. I’ve always loved old home computers too, so I decided to join these two things, and created Retrobjects.