Virtual GameBoy
version 5.9

by Marat Fayzullin



New in This Version


Virtual GameBoy (VGB) is a portable emulator of the Nintendo GameBoy handheld videogame console. It runs most GameBoy, Super GameBoy, and GameBoy Color software on your personal computer. As VGB is written in a portable C programming language, it runs on many different platforms and operating systems. You can always get the latest VGB binaries and support files from

I have always been a big fan of GameBoy and even wrote a USENET FAQ on it. In 1995, I have accidentally stumbled upon an information file on GameBoy hardware written by Pan of Anthrox, and started the VGB project. At the present time, VGB successfully runs overhelming majority of GameBoy and GameBoy Color games and supports such esoteric devices as GameShark, GameGenie, and Super GameBoy. Following is a list of features VGB supports:

VGB Ports

Because VGB is a very portable program, it can be compiled on many different platforms: Windows, Unix, Linux, Android, MacOS, MSDOS, etc. The complete up-to-date list of VGB ports can be found at the VGB homepage. Following are just the major VGB ports:


The Android version of VGB is available from Google Play:

Once you download a copy, you should be able to use it on as many Android devices as you own, as long as they are all linked to the same Google Play account. Make sure to enable automatic updates, as VGB-Android updates often. The Android version comes with many additional features, such as Cheatopedia with cheat codes for many popular games, State Exchange letting VGB users exchange saved games, the Box Art Downloader, improved Network Play functionality, and more.


The VGB-Windows is now free for everyone to use and share. It can be downloaded from the VGB homepage:

For more information, take a look at my other products for Windows:

As I have made VGB-Windows free, it is no longer being sold via eSellerate. Existing users should go to the above site and download a fresh copy. If you wish to support my work on VGB-Windows and other emulators, please consider buying VGB-Android.

VGB-Unix and VGB-Linux

VGB-Unix and VGB-Linux are available freely in binary form from the VGB homepage:

I am always trying to compile it on as many different Unix and Linux flavors as I have handy at the moment.

VGB-Maemo and VGB-Meego

The VGB-Maemo works on Nokia devices running Maemo or Meego OS. It is specifically optimized for Maemo platform and available for free from respective package repositories and VGB homepage. As both Maemo and Meego platforms are dead, I am no longer developing for them though.


I am no longer developing and supporting VGB-MSDOS, as the MSDOS platform is completely dead nowadays. Older VGB-MSDOS versions were sold as part of the VGB-Windows package (now free), compiled with OpenWatcom C++, and used DOS4GW 32bit DOS extender and VESA screen drivers.


The VGB-Symbian port worked on phones running the 3rd Edition of the Nokia S60 software. It is no longer being developed and supported, as Symbian and all its development tools are dead. You can still access some of my Symbian products at this address though:


The PocketPC version of VGB has long been developed by Aaron Oneal. As PocketPC is long dead though, VGB-PocketPC is dead as well. You can still get older PocketPC versions of VGB and my other emulators from

What is Included

Following files are included into the distribution:

  vgb         - VGB executable file (Unix. vgb -help for options)
  vgb.exe     - VGB executable file (Windows)
  VGB.html    - This documentation
  CART.GB     - Sample ROM image
  demos/      - Directory with some homebrewn GameBoy games and

What is not Included

Absolutely no ROM images of GameBoy games are included. GameBoy games are still copyrighted by the companies who produced them, and therefore, I can not distribute any of them. I'm also unable to tell you where to find these games, so do not send me email asking for them. You will have to look for them on your own.


  [ALT]          - Hold to switch to the second controller
  [SPACE]        - FIRE-A button (also: [SHIFT],A,S,D,F,G,H,J,K,L,Q,E,T,U,O)
  [CONTROL]      - FIRE-B button (also: Z,X,C,V,B,N,M,W,R,Y,I,P)
  [TAB]          - SELECT button
  [ENTER]        - START button
  [ESC]          - Quit emulation (also: [F12])
  [PGUP]         - Fast-forward emulation (also: [F9])
  [F2]           - Toggle soundtrack log on/off
  [F3]           - Toggle FIRE-A autofire on/off
  [F4]           - Toggle FIRE-B autofire on/off
  [F5]           - Invoke builtin menu
  [F6]           - Load emulation state (*.STA)
  [F7]           - Save emulation state (*.STA)
  [F8]           - Replay last few seconds of gameplay
  [F9]           - Fast-forward emulation (also: [PGUP])
  [F11]          - Reset GameBoy hardware
  [F12]          - Quit emulation (also: [ESC])
  [ALT]+[PGUP]   - Increase audio volume
  [ALT]+[PGDOWN] - Decrease audio volume

  When compiled with #define DEBUG:
  [F1]           - Go into the built-in debugger

  When compiled with #define GIFLIB:
  [F10]          - Make a screen snapshot (SNAPxxxx.GIF)

  When compiled with #define WINDOWS:
  [ALT]+[ENTER]  - Switch between full scren and window modes

Command Line Options

These options only work in VGB-Unix and other VGB ports with the command line interface. VGB-Windows takes no command line options, just a file name.
  -verbose <level>    - Select debugging messages [5]
                         0 - Silent            1 - Startup messages
                         2 - Illegal writes    4 - Illegal CPU ops
                         8 - Bank switching   16 - SuperGB commands
                        32 - Printer commands
  -vperiod <period>   - Number of CPU cycles per VBlank [70224]
  -skip <percent>     - Percentage of frames to skip [0]
  -help               - Print this help page
  -cheat <code>       - Activate a GameGenie/GameShark cheat
  -gb/-mgb/-mgbl      - GameBoy Classic or GameBoy Pocket [auto]
  -cgb/-sgb/-scgb     - GameBoy Color, Super GameBoy, or both [auto]
  -gba                - GameBoy Advance in GameBoy Color mode [auto]
  -printer/-noprinter - Pocket Printer emulation [-noprinter]
  -washout/-nowashout - Washed out CGB palette [-nowashout]
  -delay/-nodelay     - Delay line interrupts [-nodelay]
  -crc/-nocrc         - Check cartridge CRC [-crc]
  -dihalt/-nodihalt   - Emulate DI+HALT CPU bug [-nodihalt]
  -autoa/-noautoa     - Autofire for button A [-noautoa]
  -autob/-noautob     - Autofire for button B [-noautob]
  -drums/-nodrums     - Emulate noise with MIDI drums [-nodrums]
  -logsnd <filename>  - Write soundtrack to a MIDI file [LOG.MID]
  -prnfile <filename> - Write printer output to a file [stdout]
  -colorN <name>      - Set color #N [#FFFFFF,#989898,#585858,#000000]
  -bcolorN <name>     - Set background color #N [same]
  -scolorN <name>     - Set sprite color #N [same]
  -wcolorN <name>     - Set window color #N [same]
  -sync <frequency>   - Sync screen updates to <frequency> [60]
  -nosync             - Do not sync screen updates
  -tv/-lcd/-raster    - Simulate TV scanlines or LCD raster [off]
  -linear             - Scale display with linear interpolation [off]
  -soft/-eagle        - Scale display with 2xSaI or EAGLE [off]
  -epx/-scale2x       - Scale display with EPX or Scale2X [off]
  -cmy/-rgb           - Simulate CMY/RGB pixel raster [off]
  -mono/-sepia        - Simulate monochrome or sepia CRT [off]
  -green/-amber       - Simulate green or amber CRT [off]
  -4x3                - Force 4:3 television screen ratio [off]
  -sound [<quality>]  - Sound emulation quality [22050]
                        0 - Off
  -nosound            - Same as '-sound 0'

  When compiled with #define DEBUG:
  -trap <address>     - Trap execution when PC reaches address [FFFFh]
                        When a keyword 'now' is used in place of the
                        <address>, execution will trap immediately.

  When compiled with #define UNIX:
  -shm/-noshm         - Use MIT SHM extensions for X [-shm]
  -saver/-nosaver     - Save CPU when inactive [-saver]
  -scale <factor>     - Scale window by <factor> [2]

  When compiled with #define MSDOS:
  -back <filename>    - Use <filename> as background picture [VGB.GIF]
  -vsync              - Sync screen updates to VBlanks [-vsync]
  -static/-nostatic   - Use static color allocation [-nostatic]
  -480/-200           - Use 640x480/320x200 VGA screen mode [-200]

Frequently Asked Questions


    I do not know. I can't give you any due to both legal and moral reasons. Please, do not mail me asking for games. I will delete your mail right away, and you won't get an answer. Use Google instead.

  2. How do I copy games from cartridges to a computer?

    You can use a special device called cartridge copier. There are several different copiers available, both factory-made and homebrewn.

  3. What is GameBoy? How its hardware works?

    GameBoy is a handheld videogame machine produced by Nintendo. It is built around a custom CPU similar to Z80, but with some changes. An FAQ on GameBoy programming, games, and other stuff is located at

  4. There is no version of VGB for my Unix!

    I am trying to compile Unix binaries for as many flavors of Unix as possible, but as I do not have access to many machines, do not expect immediate support for every Unix flavor out there. Don't mail me asking for the source either: VGB source code is no longer publicly distrbutable, as much as I regret to say this :(.

  5. My favorite game doesn't work on VGB. What do I do?

    There may be several reasons why a game has problems running on VGB or does not run at all. Some of the problems are easy to catch by checking ROM images with GBLIST and replacing corrupted ROMs with correct ones. Others require some tweaking.

  6. What is GBLIST?

    GBLIST is a small utility which will list, verify, and possibly fix GameBoy ROM images for you. It is highly recommended to all VGB users and has been a part of the VGB distribution for a long time. It is now distributed as a part of the EMUTools package.

  7. What is EMUTools package and where can I get it?

    EMUTools is a set of utilities which may be useful for both emulator authors and users. They allow to list and verify diferent ROM images, convert music files, disassemble and compare ROMs. EMUTools can be obtained from the EMUL8 WWW site.

  8. Do I need to unpack GZIPped ROM images to run them on VGB?

    No, unless your copy of VGB has been compiled without #define ZLIB. VGB-Windows and most versions of VGB-Unix are compiled with this option. It allows VGB to recognize and automatically unpack GZIPped and singular PKZIPped files. To find out whether your VGB-Unix supports this feature, run it with -help option and see if there is anything said about GZIP support.

  9. When starting VGB-Unix, ld says that libz library isn't found.

    Some VGB-Unix binaries are compiled with #define ZLIB option to make them automatically recognize and unpack GZIPped files. This option requires ZLib library which can be obtained from

  10. When starting VGB-Unix, ld says that some library isn't found.

    This may happen if the versions of your shared libraries are older than the ones for which VGB has been compiled. A decent way to deal with this is to upgrade your Unix. A quick and dirty way is to make a symbolic link from the existing library to a name required by VGB.

  11. When starting VGB-Unix, I get X_ShmAttach error.

    You are probably trying to run VGB-Unix on a remote Xterminal while it attempts to use shared memory for interfacing with X. Use -noshm option to tell it not to use shared memory.

  12. When starting VGB-Unix, I get X_PutImage error.

    VGB-Unix version currently needs 8bit, 16bit, or 32bit X. Neither 2-color nor 16-color Xterminals will work. 24bit Xterminals may work, but don't count on it.

  13. When starting VGB-Unix, the window stays black.

    Some other X application took over all available colors so that the emulation could not allocate any for itself. Check if you run XV, Netscape, or something similar.

  14. The sound is distorted in the VGB-Windows. How do I fix it?

    The wave-synthetized sound in VGB may become distorted on slow or highly loaded machines (no graphics acceleration, for example). There are several ways you can improve sound:

  15. How do I use Pocket Printer emulation?

    Anything you print on a Pocket Printer will be printed in the ASCII art form. VGB-Unix will use standard ASCII characters and print to the standard output. VGB-Windows will use IBM PC pseudographics and print to a file called PRINTER.OUT in the current directory. Keep in mind that the Pocket Printer emulation is not perfect yet, so some games may not print properly.

  16. How do I save and load the GameBoy state during the game?

    The GameBoy state can be saved by pressing [F7] button. The resulting data file will have the same name as your .GB file, but its extension is going to be .STA. This state file will be loaded automatically next time you start VGB. The same state file is not guaranteed to work for versions of VGB running on a different hardware. State saving is not perfect yet, so for some games state may not be correctly saved.


New in VGB 5.8

New in VGB 5.7

New in VGB 5.6

New in VGB 5.5

New in VGB 5.4

New in VGB 5.3

New in VGB 5.2

New in VGB 5.1

New in VGB 5.0

New in VGB 4.9

New in VGB 4.8

New in VGB 4.7

New in VGB 4.6

New in VGB 4.5

New in VGB 3.5

New in VGB 3.4

New in VGB 3.3

New in VGB 3.2

New in VGB 3.1

New in VGB 3.0

New in VGB 2.2

New in VGB 2.1

New in VGB 2.0

New in VGB 1.7

New in VGB 1.6

New in VGB 1.5

New in VGB 1.4

New in VGB 1.3

New in VGB 1.2

New in VGB 1.1

© Copyright by Marat Fayzullin (marat [AT] komkon (DOT) org)