Virtual GameBoy
version 5.9
Contents
Disclaimers
- GameBoy, GameLink, GameBoy Pocket, GameBoy Light, GameBoy Color,
Super GameBoy, Pocket Camera, Pocket Printer, and Rumble Pack
are all registered trademarks of Nintendo.
- GameGenie is a registered trademark of Galoob.
- GameShark is a registered trademark of InterAct.
- The author is in no way affiliated with Nintendo.
- The author is in no way affiliated with any pirate group out there.
- The author cannot and will not provide you with
any GameBoy games.
- The author cannot be held responsible for anything this program
will do to your computer, brains, free time, housemates, pets, or
family members.
New in This Version
- Refactored Windows EMULib code.
- Most command line options should now work in Windows version.
- Added "Video | Show Framerate" menu option to VGB-Windows.
- Increased synchronization timer precision in Windows version.
Introduction
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
http://fms.komkon.org/VGB/
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:
- Standard GameBoy Hardware
- CPU (modified Z80)
- Video Processor
- Sound Generator
- 8kB Internal RAM
- 8kB Internal VRAM
- GameLink (Unix, Windows, Symbian ports)
- Palette (yellowish)
- Hardware ID
- Cartridges
- Automatic ROM/RAM/MBC Recognition
- Battery Backed RAM
- MBC1 Mapper Chip
- MBC2 Mapper Chip
- MBC3 Mapper Chip
- MBC5 Mapper Chip
- MBC7 Mapper Chip
- HuC1 Mapper Chip
- HuC3 Mapper Chip
- TAMA5 Mapper Chip
- MMM01 Mapper Chip
- MBC1 8MBit ROMs
- MBC3 Real-Time Clock
- MBC5 Rumble Pack Motor
- MBC7 Tilt Sensor
- 93cXX Serial EEPROM
- GameBoy Pocket
- Palette (grayish)
- Hardware ID
- GameBoy Light
- Palette (bluish)
- Hardware ID
- Super GameBoy
- Colored Screen
- Palettes
- Background Frames
- 2-Player Mode
- 4-Player Mode
- GameBoy Color
- 32kB Internal RAM
- 16kB Internal VRAM
- Multicolored Screen
- Palettes
- New DMA Mode
- Speed Switch
- Hardware ID
- GameBoy Add-Ons
- Galoob GameGenie
- InterAct GameShark
- Nintendo Pocket Printer
- Nintendo Pocket Camera
- Other
- Simultaneous SGB+CGB emulation
- Automatic handling of GZIPped ROMs
- Emulation state saving and loading
- Soundtrack logging into MIDI Files
- Semiautomated cheat search
- "Washed out" CGB Palette Mode
- Built-in configuration menu
- Built-in debugger
- Video image interpolation
- Simulated TV scanlines
- Custom palettes
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:
VGB-Android
-
The Android version of VGB is available from Google Play:
https://play.google.com/store/apps/details?id=com.fms.vgb
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.
VGB-Windows
-
The VGB-Windows is now free for everyone to use and share. It can be
downloaded from the VGB homepage:
http://fms.komkon.org/VGB/
For more information, take a look at my other products for Windows:
http://fms.komkon.org/EmuWindows/
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:
http://fms.komkon.org/VGB/
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.
VGB-MSDOS
-
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.
VGB-Symbian
-
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:
http://fms.komkon.org/EmuSymbian/
VGB-PocketPC
-
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
http://fms.komkon.org/MorphGear/
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
demos
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.
Buttons
[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 WANNA PLAY GAMES!!!! WHERE DO I GET GAMES???????
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.
- 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.
- 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
http://fms.komkon.org/GameBoy/
- 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 :(.
- 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.
- If emulator does not even recognize the ROM image, its CRC or CMP
may be wrong. Try turning CRC checking off by using -nocrc option
or clearing "Check CRC" menu item in VGB-Windows. You really need
to find an uncorrupted ROM image though.
- Check your ROM image size: it must be a multiple of 16384. If it is
512 bytes longer, then you may have a SmartCard copier header
attached to it. In this case, remove first 512 bytes of the file.
- If a GameBoy Color game behaves strangely, it may be because you
selected both GameBoy Color and Super GameBoy support. Most games
will either default to one of these, or use both, but some games
malfunction with both these modes enabled. For such games, disable
either GameBoy Color or Super GameBoy support. Remember, there is
no official CGB-compatible Super GameBoy hardware.
- If a GameBoy Color game shows up in messed up colors and runs very
slow, it may be because the game changes color palette "on the fly",
while display is being updated. For such games, use static palette
option (-static). This problem may only occur in VGB ports compiled
with 8BPP color mode.
- If you see a group of "dirty" lines on VGB screen, or a game behaves
strangely, try -delay/-nodelay options, or check/clear the "Delay
Line Interrupts" menu item in the VGB-Windows Setup Panel.
- If some sprites blink or do not appear at all, try changing -skip
value (0 will give you the best picture, but the slowest emulation),
or selecting one of "Draw XX% frames" menu items in VGB-Windows.
- VGB may not currently run this game. Not all games are supported at
this moment. Don't expect 100% compatibility with the real hardware.
- 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.
- 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.
- 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.
- 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
http://www.zlib.net/
- 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.
- 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.
- 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.
- 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.
- 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:
- Decrease the sampling frequency (in Audio menu). The sound may become
tinkier, but less distorted.
- Increase the latency (Audio menu). This may cause sound to fall
behind the screen action, but the sound quality will become better.
- Use MIDI sound instead. It has both advantages and disadvantages
though.
- Make VGB skip more frames (in Video menu). The screen action will
become less smooth, but the CPU load will decrease.
- Make VGB window smaller to decrease the load on the CPU. 1:1 is
the optimal size.
- 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.
- 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.
History
New in VGB 5.8
- Added file drag'n'drop support to VGB-Windows.
- Added CPU-based simple linear scaling algorithm.
- Refactored scaling and special effects framework.
- Optimized scaling for large screens and windows.
- Enabled "Video | Stretch Full Screen" option with effects enabled.
- Enabled "Video | Force 4:3 Screen" option with effects enabled.
- Added "Video | Interpolate Video | Linear Scaling" option to VGB-Windows.
- Added
-linear
command line option to VGB-Linux.
New in VGB 5.7
- Fixed high-frequency sound limit (GBC Frogger).
- Added "File | Clear Settings and Quit" option to VGB-Windows.
- Fixed small windows behavior in VGB-Windows.
- Fixed window position behavior in VGB-Windows.
- Saving physical joystick/gamepad selection in VGB-Windows.
New in VGB 5.6
- Fixed RTC day of the week calculation (Pokemon games).
New in VGB 5.5
- Added ability to play GBC games in GBA "backward compatibility mode".
- Use
-gba
in VGB-Unix to enable GBA compatibility mode.
- Use "Hardware | GameBoy Model | GameBoy Advance" in VGB-Windows.
- Added ability to browse through paused replay.
- During replay, press [LEFT] and [RIGHT] keys to browse.
- Press [UP] to resume replay, any other key to continue.
- Press any other button to continue playing.
- Made replay save states approximately every 170ms.
- Made replay code always return "replay-ended" when replay ended.
- Made WaitJoystick() exit when window closed.
New in VGB 5.4
- Added remaining time display during replay.
- Added shadow underneath the time display.
- Stopping replay when menu opens on Windows.
- Fixed replay rollover mechanism.
New in VGB 5.3
- Added second joystick support to VGB-Windows.
- Added multiple monitor support to VGB-Windows.
- Fixed disappearing window in VGB-Windows.
- Fixed best full-screen mode detection in VGB-Windows.
- Fixed window flicker that appeared after recent Win10 updates.
- Fixed DirectInput joysticks support in VGB-Windows.
- Made directional pads work on XBox gamepads.
- Switched VGB-Linux to using PulseAudio sound.
- Updated old PulseAudio driver for 64bit Linux.
New in VGB 5.2
- Added support for DirectInput joysticks to VGB-Windows.
- Moved all input-related options to the "Input" menu in VGB-Windows.
- Fixed crash when changing audio sampling rate in VGB-Windows.
- Added "Draw 65% Frames" option to VGB-Windows.
- Fixed screen updates after changing scaling algorithm in VGB-Windows.
New in VGB 5.1
- Added "Nearest Neighbor" option to disable linear interpolation.
- Added "Force 4:3 Screen" option to VGB-Windows.
- Fixed "Hit MIDI Drums" option in VGB-Windows.
- Computing effective waveform power when simulating samples via MIDI.
- Fixed 44kHz sound hiccups in VGB-Windows.
- VGB-Windows will not overwrite last .GB file name with .PAL or .STA names.
- Keys [1]-[4] will toggle individual sound channels in VGB-Windows.
- Key [0] will toggle all sound channels in VGB-Windows.
- Added
-4x3
command line option to VGB-Unix.
- Updated VGB-Windows icon.
New in VGB 5.0
- Added Scale2X scaling algorithm.
- Added Monochrome, Green, Amber, and Sepia CRT emulation.
- Added
-scale2x
and -raster
command line options.
- Added
-mono
, -sepia
, -green
,
and -amber
command line options.
- EMULib-specific command line options now processed inside EMULib.
- Added "Scale2x Algorithm" and "LCD Raster" options on Windows.
- Renamed "Color Raster" menu to "Color Filter" on Windows.
- Deprecated
-notv
and -nolcd
command line options.
New in VGB 4.9
- Disabled DI+HALT bug when DI occurs right before HALT.
- Enabled DI+HALT emulation by default.
- Added support for cartridge type 0x97 (Karate Joe).
- Robocop runs with DI+HALT emulation enabled now.
- The Smurfs runs with default settings now.
- Thunderbirds runs with default settings now.
- Added "Play Sound When Inactive" option to VGBA-Windows.
- Added "Clear File Associations" option to VGBA-Windows.
- Made color raster effects stronger.
New in VGB 4.8
- Added special effects simulating individual pixel components.
- Added EPX and EAGLE scaling algorithms.
- Fixed memory corruption bug in the instant replay recorder.
- Fixed instant replay not restoring successive states.
- Fixed instant replay not recording the first state.
- Merged scanline options into "Simulate Scanlines" in VGB-Windows.
- Merged scaling options into "Interpolate Video" in VGB-Windows.
- Added "Apply Color Raster" submenu to VGB-Windows.
- Added "RGB Raster" and "CMY Raster" options to VGB-Windows.
- Added
-rgb
and -cmy
command line options.
- Added
-epx
and -eagle
command line options.
New in VGB 4.7
- Switched VGB-Windows to Direct3D textures-based rendering.
- Added "Video | Stretch Full Screen" option to VGB-Windows.
- Added "Hardware | Debugger" option to VGB-Windows.
- Added
-lcd
and -nolcd
command line options.
- Added optional color palette by Roger Casella.
- Added
gblist
to the package.
New in VGB 4.6
- Fixed window display (Duke Nukem and other games).
- Corrected wave sound pitch (Pokemon Yellow, Baloon Kid, etc).
- Removed waveform interpolation for more realistic sound.
- Optimized wave sound emulation.
New in VGB 4.5
- VGB-Windows is now free for everyone to use.
- VGB-Android is available from the Google Play.
- VGB-Symbian, VGB-MSDOS, and VGB-PocketPC are discontinued.
- Added GameBoy Light emulation.
- Added TAMA5 mapper emulation (Tamagotchi 3).
- Added MMM01 mapper emulation (Taito Variety Pack and Momotaro Collection 2).
- Added MBC7 mapper emulation (Kirby's Tilt'n'Tumble).
- Added optional DI+HALT CPU bug emulation.
- Added proper noise channel emulation.
- Added 93cXX serial EEPROM emulation.
- Added tilt sensor emulation.
- Added support for .IPS files. For "mygame.gb", use "mygame.ips".
- Added support for .PAL files. For "mygame.gb", use "mygame.pal".
- Added "instant replay" feature letting you go back in time ([F8]).
- Added tool that lets you hunt for new GameShark cheats ([F5]).
- Added "vertical scanlines" emulation, as found in old LCDs.
- Added "raster effect" emulation, as found in newer LCDs.
- No longer compressing .SAV files, to avoid confusing the users.
- Made LYC IRQ happen instantly when LYC set to the current scanline.
- Made LCD controller reset scanline when it is reenabled.
- Now enabling LCD controller on startup (Aerostar, Alfred Chicken, etc).
- Now disabling IRQs on startup (Robocop 2, Shadowgate, etc).
- Now checking IRQs when ISWITCH/IFLAGS modified (Final Fantasy Legend).
- Now "ticking" RTC while not playing (time progress in Pokemon, etc).
- Now clearing scratch RAM after reset.
- Now locking out opposite arrow keys.
- Now resetting DIVREG on writes.
- Fixed IRQ priorities, with VBlank IRQ getting top priority.
- Fixed sprites-over-window display to avoid hiding sprites.
- Fixed corrupted Super GameBoy backdrop on startup.
- Fixed saving and restoring sound chip state.
- Fixed saving and restoring SGB colors.
- Fixed "JR offset" and "JR Z,offset" instruction timings.
- Fixed exit from HALT instruction.
New in VGB 3.5
- Ported VGB to Unix using the new EMULib framework. I will try
to compile the new VGB-Unix for as many Unix flavors as
possible. At the moment, only Ubuntu Linux binaries are available.
- Ported VGB to Maemo OS2008 used in N800 and N810 internet tablets
from Nokia. VGB-Maemo is specifically optimized for internet
tablets using assembler modules from VGB-Symbian.
- Replaced
-zoom/-nozoom
command line options with
-soft/-nosoft
and made softening, scanline simulation,
and synchronization options work on all relevant platforms
(Unix, Maemo, MSDOS).
- Replaced
-240
option with -480
in VGB-MSDOS.
- Removed
-novsync
option from VGB-MSDOS, as
-nosync
does the same thing.
- Made
[F8]
toggle scanline simulation, while
[SHIFT]+[F8]
toggles softening.
- Fixed situation when VGB-Windows could stay in memory after being
closed.
- VGB-Symbian display routines rewritten in ARM assembler for speed.
This should mainly affect UIQ3 users but S60 users will also benefit.
- Split VGB-Symbian configuration menu into four tabs, making
"Video" and "Audio" settings separate.
- Added "Audio Latency", "Skip Frames", and "Sync Updates" settings
to VGB-Symbian.
New in VGB 3.4
- Added GameLink emulation to VGB-Windows and VGB-Symbian.
- Fixed a possible crash on cartridges with <8kB onboard RAM.
- No longer clearing battery-backed RAM on reset.
#ifdef SOUND
finally retired from the code. The sound
code is always compiled in anyway.
- Added new, much better, scanline simulation and video softening
effects to VGB-Windows.
- VGB-Windows full-screen mode now runs in 640x480 resolution.
- Added
-zoom/-nozoom
option to VGB-MSDOS that will
zoom GameBoy display to fill the whole screen, using image
softening algorithm.
- Added
-sync/-nosync
option to VGB-MSDOS to sync screen
updates to the timer (use -vsync
for VBlanks).
- Added [CONTROL]+[F8] key combination to VGB-MSDOS to toggle
display zoom on/off.
- VGB-MSDOS now runs in 640x480x15bpp VESA screen mode when
-zoom
or -tv
options used, otherwise
it runs in 320x200x15bpp screen mode.
- Added new "Fill & Soften" zoom mode to VGB-Symbian. It is
rather slow though.
- Added screen orientation and backlight control to VGB-Symbian.
- Fixed possible source of instabilities in the S60 open file dialog
in VGB-Symbian.
- Fixed exit via Symbian-specific menu.
- Fixed premature termination of the emulation thread when exiting
VGB-Symbian, soundtrack recording and config saving work again.
- Documentation updated to reflect all the latest changes.
New in VGB 3.3
- Now only autorecognizing GameBoy hardware model when loading a new
cartridge.
- Removed unused fields in the Z80 structure. State file format has
changed!
- Now always showing registers, interrupts, and stack in the built-in
debugger.
- Added
-prnfile
command line option.
- Rehashed built-in menu to stick more options into scarce screen space.
- Added built-in menu options to record MIDI soundtrack, hit MIDI
drums on noise, choose soundtrack and printer output files.
- Added frame rate display option to VGB-Symbian.
- Added "fill screen" zoom option to VGB-Symbian.
- Added MIDI soundtrack logging to VGB-Symbian (saved into
E:\Sounds and can be used as ringtones).
- Added "Save Printer Output" menu option to VGB-Windows.
- Added error messages to VGB-Windows.
New in VGB 3.2
- Fixed keypress wait on STOP opcode (Top Gear Rally).
- Added cartridge loading to the built-in menu.
- Added game state saving and loading to the built-in menu.
- Now saving preferences in VGB-Symbian.
- Added wait and error messages to VGB-Symbian.
- Added button mapping configuration to VGB-Symbian.
- Optimized VGB-Symbian screen rendering in assembly.
- VGB-Symbian config menu has been split into three pages.
- VGB-Symbian now simulates Rumble Pack with phone's vibration feature.
- Updated the documentation.
New in VGB 3.1
- Moved VGB-Windows and VGB-MSDOS to the new EMULib framework.
- Added builtin configuration menu that works on every platform ([F5]).
- Added a new screen buffer based debugger.
- Added LoadGB() function to load ROMs at runtime.
- Made code more modular.
- Added scanline simulation.
- VGB-Windows is now much faster, especially with large window sizes.
- VGB-Windows audio has improved a lot.
New in VGB 3.0
- When you buy VGB-Windows, you now also get VGB-MSDOS
- Added DirectDraw-based full screen mode to VGB-Windows.
Press [ALT]+[ENTER] to switch in and out of the full screen mode.
Use it with caution, as DirectDraw is notoriously unstable.
- Z80 now executes one opcode after being taken off HALT and before
calling an interrupt handler. This has fixed Final Fantasy Legend
while keeping everything else operational.
- Optimized sprite rendering a bit.
- Fixed several bugs in the MIDI logging code and the Windows MIDI
sound driver.
- Added fast-forwarding option ([PAGEUP], also [F9] in Windows and Unix).
- Added TV scanline simulation to VGB-Windows anf VGB-MSDOS.
- Added debugger to VGB-Windows ([F1]).
- Window size and position are now saved on exit in VGB-Windows.
New in VGB 2.2
- Now zeroing IBackup counter on HALT (Moorhuhn Jagd).
- Fixed a small bug in the serial I/O code.
- Multiple fixes in the sound chip emulation.
- Added load state button ([F6]) and moved other buttons a little bit
(see documentation).
- Switched to the latest version of the OpenWatcom C/C++ compiler.
- The infamous Windows problem with spaces in directory names seems
to be fixed by using a newer compiler.
- Joystick problems in VGB-Windows are fixed.
- Added joystick configuration to VGB-Windows setup panel.
- Defaults switched to wave synthesis sound in VGB-Windows.
- No longer controlling MIDI sound volume in VGB-Windows.
- Fixed volume controls ([-]/[+]) in VGB-Windows.
- Fixed file extension patterns in VGB-Windows "New" dialog.
- Fixed a Unix sound driver problem with non-atomic write, thanks to
Colin Howell.
- Fixed a Windows sound driver problem on Windows 2000.
New in VGB 2.1
- DI opcode now cancels pending EI (Killer Instinct, Donkey Kong Land
series).
- Fixed GBC and SGB colors to span from black to true white.
- Added sound chip initialization on startup (Fortified Zone,
Fortified Zone 2, Beetlejuice).
- Fixed third sound channel (still not perfect).
- Added SetWave() call to the sound API.
- Added SetWave() waveforms to the third sound channel.
- Window refresh does not start if the window was off when refresh
reached its top (WarriorsOfMightAndMagic).
- Now setting LCD state to 0 during last two lines of VBlank (152-153)
so Final Fantasy Legend works again.
- Moved VBlank interrupt from line 145 to line 144 (Force 21, Cruisn'
Exotica, Army Men 2).
- Moved VBlank interrupt to the beginning of scanline (Daedalian Opus).
- Waveform sound emulation in VGB-Windows has been thoroughfully
debugged (again). This time it appears to work.
New in VGB 2.0
- FAQ section of the manual has been extended. Please, consult it
before asking any questions.
- Sound emulation has been completely rewritten and sounds much better
than any previous version. This also fixes several games that
expect sound hardware to behave correctly.
- Added ability to simulate noise channel with MIDI drums.
- Added support for cartridges with a tilt sensor (Kirby's Tilt And
Tumble), although tilt sensor is not yet emulated. Working on it.
- Added ability to switch back to normal-speed mode (Kate & Ashley,
Godzilla The Series, Ready To Rumble Boxing).
- Added support for "rised" window tiles.
- Added "printer busy" period (printing in 1942, Super Mario Brothers
DX).
- Added interrupt on LCD state 2 (CAT Construction Zone, Perfect Dark).
- Fixed handling of the HALT instruction.
- Moved scanline refresh to the beginning of HBlank (Rayman).
- Moved all CGB palette changes right before the scanline refresh.
- Now setting current scanline to 0 at the middle of the last
scanline of VBlank (153). This fixed palette glitches in many games
(Tomb Raider, Frogger 2, QBert).
- Fixed reset procedure in multiple places.
- Fixed on-cartridge RAM protection scheme (Green Beret Beta).
- Fixed interrupts so that changes to ISWITCH do not affect IFLAGS
(Alfred Chicken, Galaga Destination Earth, WWF King Of The Ring,
Ren And Stimpy, etc.).
- Fixed LCD scanline timings (Men In Black, Bug's Life, FIFA 2000, and
probably other THQ/Tiertex games).
- Fixed HDMA transfer status (Les Razmoket 100% Angelica).
- Fixed timer behavior in the high-speed mode (Croc).
- Fixed interrupt flags to activate even when interrupt is off.
- Fixed Z80 interrupt handling after EI (thanks, Maarten!).
- Fixed gross bug affecting rendering of CGB sprites (Wacky Racers).
- New sound and MIDI logging APIs have been integrated.
- Added static palette option to VGB-Unix.
- Fixed window resizing problems in VGB-Unix.
- VGB-Windows now runs in 16BPP HiColor mode.
- Changed Setup Panel GUI in VGB-Windows.
- Added ability to change GameBoy color palette in VGB-Windows.
- Added Rumble Pack emulation with drums to VGB-Windows.
- Fixed several problems with VGB-Windows waveOut sound drivers.
New in VGB 1.7
- Changed CGB DMA to decrement counter on each scanline.
- Changed CGB DMA to update source/destination registers during transfer.
- Fixed sprite/background priorities.
- Added option for "washed out" CGB palette.
- Added option for static color palette.
- VGB-Unix now has a proper application icon in WMaker.
- Now saving realtime clock time base in the state file.
New in VGB 1.6
- Now refreshing SGB frame when new characters are loaded.
- Fixed video and other timings relative to the CGB CPU speed.
- Fixed recognition of CGB cartridges (SuperMarioBrothersDX, etc.).
- Fixed sprite drawing code.
- Changed processing of pending interrupts in CPU emulation.
- CGB DMA now ends by putting FFh into transfer length register.
- Made CGB draw background if only sprites are enabled.
- Fixed display blanking to fill display with correctly sized values.
- Added source to get Bung Xchanger to the documentation.
- Registration service for VGB-WIndows has been changed to DigiBuy.
- Fixed current directory name in VGB-Windows.
- Added *.GBC pattern to VGB-Windows file requester.
- Changed video state changes (FinalFantasyLegends work again).
- State file changed to v.2 due to CPU state changes.
- Sound in VGB-Unix fixed to work on some buggy OSS versions.
- VGB-Unix runs in a resizable window now.
- Fixed IPC key allocation bug in VGB-Unix.
- VGB-Windows uses multimedia timer to sync screen refresh.
New in VGB 1.5
- Implemented correct GameBoy hardware reset.
- Added emulation state saving/loading.
- Added Rumble Pack emulation.
- Added working HuC3 emulation.
- Added some explanations to builtin help page.
- Corrected GameBoy clock timings.
- Corrected LCD state transitions.
- Improved VRAM->SGB copy routine and its timing.
- Fixed SGB frame color #0 (Pocket Monsters Blue).
- Fixed SGB FILL FRAME function (King Of Fighters 96).
- Fixed SGB CHRGEN transfer function (Shanghai Pocket).
- Added speed control to VGB-Unix.
- Small speed up in CGB emulation in VGB-Windows.
- Fixed sound balance in VGB-Windows.
- Fixed joystick support in VGB-Windows.
- Corrected several errors in the documentation.
New in VGB 1.4
- CGB CPU STOP opcode implemented correctly.
- CGB double speed switch implemented.
- CGB HFLIP tile attribute implemented.
- CGB VFLIP tile attribute fixed.
- CGB DMA mode fixed.
- Added Pocket Printer emulation.
- Added Hudson HuC1 mapper emulation.
- Started adding Hudson HuC3 mapper emulation.
- Minor changes in video controller emulation.
- Fixed implementation for MBC3 realtime clock.
- Minor changes in GameShark emulation.
- Version number fixed in VGB-Unix.
- Number of palette entries corrected in VGB-Unix.
- Multiple fixes to VGB-Windows startup code.
- "Size|Snapshot" option in VGB-Windows.
- VGB-Windows now remembers window size/position.
- Added miscellaneous keyboard controls to VGB-Windows.
New in VGB 1.3
- Documentation is now in HTML format.
- Added support for Nintendo Pocket Camera.
- Added support for InterAct GameShark.
- Added GameLink emulation (Unix only, over TCP/IP).
- Added MBC5 mapper chip emulation.
- Fixed a bug with sprite display (Casper, etc.).
- Fixed multiple bugs with CGB display (DragonQuestMonsters).
- Fixed a bug with joypad (PocketMonsters games).
- Added speed controls to VGB-Windows.
- Cheat saving/loading fixed in VGB-Windows.
New in VGB 1.2
- Documentation extended and corrected in many places. READ IT!
- Complete Super GameBoy support! Some games may still not work
properly, but only a small part.
- Partial Color GameBoy support! Unfortunately, this hasn't been
properly tested yet.
- Separate Pocket GameBoy support! Correct colors and ID code.
- Speedup due to somewhat improved memory access code.
- Automatic detection of SGB/CGB capabilities in cartridges.
- New GBCarts library properly recognizes new switch types and ROM
sizes.
- Soundtrack saved directly into MIDI files. No conversion needed.
- Separate screen refresh routines for the normal GameBoy, SGB, and CGB.
- Fixed SGB multiplayer function, thanks to Pascal Felber.
- Improved VRAM->SGB data transfer code.
- Fixed MBC3 bank switching (Wario World 2, etc.).
- Fixed window rendering in video controller, thanks to Pascal Felber
(Star Trek, Donkey Kong, PGA Golf, etc.).
- Fixed serial I/O support and timings, thanks to Paul Robson
(Stargate, Alleyway, Nintendo Baseball, Winning Goal, etc.).
- Fixed joystick port handling (Beetle Juice, Battle Bull, etc.).
- VGB-Unix supports 8bpp, 16bpp, and 32bpp X-Windows modes.
New in VGB 1.1
- Fixed a bug in CPU with flag states after RLCA/RRCA/RLA/RRA
operations (Final Fantasy Adventure, Wordtris, Snow Brothers Jr,
etc.).
- Fixed a bug in saving battery-backed RAM which prevented large (32kB)
RAMs from being saved (Pocket Monsters, etc.).
- Fixed a bug in support for 8MBit ROMs.
- Added autofire and GameGenie keyboard controls to VGB-Unix.
- VGB-Windows no longer depends on WinG.
© Copyright by
Marat Fayzullin
(marat [AT] komkon (DOT) org)