PyGirl is a whole-system virtual machine (WS VM) implementation for the classic Gameboy.

PyGirl is mostly meant as a research project in which we investigate the usefulness of the PyPy toolchain for building cleanly designed, but ultimately efficient, WS VMs. PyGirl is fully written in RPython.

The main goal of RPython in PyPy is to support high-level language virtual machines (HLL VMs). In this project we investigate if it is possible to use the same techniques for WS VMs, popularly known as emulators. We believe that much of the techniques for HLLs will allow us to write emulators with the same elegance while not losing too much performance.

Since (modern) WS VM, unlike many HLLs, are more bound to the availability of peripheral devices, a part of the focus lies in extending PyPy to fit the needs of our emulator. Which will eventually also serve HLL VMs in PyPy.


PyGirl is able to play all roms we tested. Graphics and controller are supported through the SDL library. Sound is not supported yet. Furthermore a meta-window mode is provided to see the background, window and the sprites separated.

Download PyGirl

PyGirl is currently in development and is available in the main PyPy branch

The debug version using memory dumps is available here


  • Camillo Bruni and Toon Verwaest, "PyGirl: Generating Whole-System VMs from high-level prototypes using PyPy", (submission) is accepted for publication at Tools ’09.

Useful Links


Toon Verwaest and Camillo Bruni

Last changed by admin on 21 April 2009