BGB version 1.03
homepage:http://bgb.bircd.org/
email: bgb at bircd dot org
this is a gameboy/color emulator for win32 which will probably never be finished
disclaimer:
no warranty of any kind, use at your own risk. This program is guaranteed to do nothing but taking disk space. Don't blame me if it damages your computer, or erases your hard drive, etc.
Using copyrighted roms with an emulator is illegal if you don't own the real cartridge or have explicit permission from the copyright holder. If you choose to do so, that is your responsibility.
note: Click the right mouse button in the emulator window to get the popup menu, from which you can access the options and functions.
default keys:
numpad + | fast forward |
numpad * | reset gameboy |
numpad - | cheat codes on/off |
A | B button |
S | A button |
Shift | Select button |
Enter | Start button |
F2 | save state |
F3 | select state |
F4 | load state |
Esc | debugger |
features in this version:
- emulation of the GameBoy, GameBoy Color, and Super Gameboy
- SGB multiplayer with up to 4 gamepads
- powerful debugger:
- disassembler
- assembler (change code and ability to save modified rom)
- breakpoints
- break on access
- conditional breakpoints
- singlestepping/tracing/animating/step out/step over
- vram viewer: BG map, tiles, OAM, palette
- IO registers viewer
- break on exceptions (accessing inaccessible VRAM, read unitialized WRAM and HRAM, echo ram access, access locked external ram, disable video outside vblank)
- graphics output: directdraw and DIB supported
- sound output: waveout, directsound and disk writer supported
- runs almost all roms perfectly, compatibility comparable with the best GB/C emulators
- Accurate/high quality sound emulation, can generate bandlimited rectangular waves
- accurate video emulation. The screen looks exactly as on a real GB/GBC.
- This emulator is fast.
- Joystick/Gamepad support, everything configurable
- some user interface keys are configurable and can be mapped to joystick/gamepad buttons
- MBC3 Real Time Clock emulation.
- Auto delay/frameskip, gameboy runs at 100% real speed and full ~60 fps
- GameGenie and GameShark cheat, load/save cheats (auto and manual), "cheat searcher", easy creation of new cheat codes
- save/load state with quick (zsnes style) keys.
- Load from zip and gzip files
- This program does not require DirectX or runtime libraries.
- support for optional border bitmap and pseudo fullscreen mode.
- TCP/IP game link support
system requirements:
win32 i386 (95, 98, ME, NT4, 2000, XP, and possibly later versions of windows).
also, BGB runs on wine on linux.
Windows compatible soundcard and joystick/gamepad are optional. A videocard with directdraw hardware acceleration is recommended.
- Pentium 133-166 MHz or equivalent: GB games and older GBC games run optimal/fast.
- Pentium 200-233 MHz or equivalent: recommended for demanding GBC games.
- pentium 300 MHz or equivalent: recommended for the debugger features (emulation with break on exceptions, breakpoints, etc)
debugger:
bgb can emulate some things "like real hardware", such as inaccessible VRAM, "random" initialized wram/hram, and the "halt/ints disabled bug". these are enabled by default, and give no speed penalty.
they can give problems with PD/unofficial roms and may be disabled.
if they are enabled, one can also set "break on ..." settings to find if a rom is misbehaving.
note that if you enable any "break on" settings, or set breakpoints of any kind, bgb will run in "debug mode", and will be about twice as slow because of extra checks.
this is done to allow bgb to run as fast as possible if debug features are disabled.
known problems:
- pinball fantasies/deluxe: crashes in game
- worms armageddon: glitches in game. workaround: works perfectly with zero filled ram on reset
- bgb 0.9 will hang/crash when attempting to open bgb 1.0 save states because the old save state format had no version information.
options window:
Popup menu --> Options.
here you can change the joypad keys, the colors of gameboy screen, and the sound options.
Sound:
- Enable DirectSound: attempt to initialize DirectSound, fallback if fails
- 8 bits output: enable this if 16 bits audio is not supported or gives problems.
- bandlimited CH1/CH2: sounds better. recommended, but disabled by default because it needs a fast pc.
- Latency: setting this higher means lower latency. setting it too high causes sound to skip.
- WAV file writer: Each time when you enable sound or restart the emulator, the wav file is reset. because of this, if you want to keep a sound, you must copy the wav file. The wav file will be closed when you disable the wav writer.
Joypad:
- click on "configure keyboard" or "configure game controller", to show the wizard. press the desired keys/buttons for the hilighted buttons.
to change keys for user interface functions (load/save state, fast forward, reset, etc), check "configure extra buttons", then click on "configure ..."
Misc:
- show framerate: shows framerate in the window title bar, 2 numbers: drawed frames/sec, executed frames/sec.
- increase timer resolution: sets system clock to 1000 Hz to allow for a smooth framerate and reduced cpu usage.
- reduce CPU usage: causes bgb to use the minimum possible cpu by issuing sleep calls when waiting
- pause if losing focus: pauses/stops bgb if switching to another app.
- animation recording: saves a BMP screenshot for every 1 or 2 frames, this can be used to make movies.
- use fast open files dialog: uses bgb's builtin open/save files dialog instead of the default windows one which can be very slow in windows XP.
- framerate, and adjust sound speed: can be used to make bgb run slower or faster than real speed
- boot logo/tones like real DMG: note: can give problems if enabled: breaks a few games, interferes with debugger
Graphics:
- screen filter: "mix current/last frame" can be used to make games show correctly which use "flickering" to mix colors ("ballistic", "nuku7 7 shades demo")
"interlacing" filter can give an effect like the real GBC but it is probably not accurate/correct.
- Enable DDraw: disable this to cause bgb to never try to initialize directdraw. default is to try to init ddraw, and fall back to DIB.
- backbuffer in system: toggle directdraw backbuffer in system memory. can be faster or slower. on modern videocards, this can be used to select "blurry" or "blocky" stretching, according to personal taste.
- 8 bits DIB: use together with disabling ddraw. can be faster on old pc's, but hicolor screens will look wrong.
- null gfx output: causes bgb to render graphics, but to not output them. for testing purposes.
note: if you want bgb to not render graphics, for example to use all available cpu for sound, resize the screen window so the height is 0.
- GBC LCD colors: make GBC colors look as on real GBC. disable to use RGB values directly without conversion.
- border BMP file: you can use a bmp file as border for BGB (it will show if enabled, and there is no SGB border). use a 160x144 pixels plain, one color rectangle to define the location of the GB screen. You can also drag and drop a bitmap file to use it as background.
- wait for vblank 0: disabled, 1: 1 frame/vblank, 2: 1 frame/2 vblanks, 3: 1 frame/3 vblanks, 4: real speed and wait for vblank
System:
- Gameboy: runs any rom as on a DMG (original gameboy)
- Gameboy Color: runs any rom as on a GBC (gameboy color). this also emulates a DMG rom as on a real GBC in DMG mode, including problems, for debug purposes. (example: "legend of zerd")
- Super Gameboy: runs any rom with SGB support as on a SGB, any other rom as on a DMG.
- automatic, prefer GBC: runs DMG, SGB, and GBC roms on the proper system. runs GBC+SGB roms as on a GBC.
- automatic, prefer SGB: runs DMG, SGB, and GBC roms on the proper system. runs GBC+SGB roms as on a SGB.
- SGB + GBC: emulates both SGB and GBC features at the same time. because this system does not exist, roms may have problems/unpredictable behavior.
- GBC + initial SGB border: starts SGB+GBC roms in SGB mode, until they transferred a border, then resets in GBC mode. this is required for some GBC+SGB roms to show a border.
- detect GB pocket/SGB2: when in DMG mode, make roms detect a gameboy pocket, possibly unlocking features.
- detect GBC on GBA: when in GBC mode, make roms detect a gameboy advance, possibly unlocking features (example: "legend of zelda oracle of ages/seasons")
- fast SGB transfers: run at unlimited speed during SGB VRAM transfers.
- cart emulation:
- prefer accuracy: emulate the proper MBC and ram size according to the rom header, including hardware problems/limitations. should work best for official roms.
- prefer compatibility: try to support as many roms as possible, ignoring rom header fields (needed for broken PD/unofficial/trainer roms) (default)
GameGenie/GameShark cheat:
the cheat window shows a list. you can add/edit/delete cheat entries, with a code and a description. you can load/save the cheats to a file.
meaning of the letters:
- G = game genie
- S = game shark
- P = patched. means a gamegenie code changed values in the rom. if it does not show, the gamegenie code does not work for the used rom.
- E = enabled (toggled with enable/disable buttons)
cheat editor: you can either enter a game genie/shark code, or enter "internal values" which allows you to easily make your own codes.
How to make bgb run faster if you have a slow computer
- Combine 640x480 screen resolution with a small window (1x1 scale)
- Set the windows screen to 16 bpp.
- Set "8 bits gfx quick & dirty" in the bgb options.
- Set the sound samplerate to 22KHz or just turn sound off.
full screen mode:
select window size -> full screen, to go to full screen mode. the GB screen will be at the center of the screen and has the same size which the window had before going to fullscreen mode.
game link:
for bgb game link to work at all, you need a very fast pc (P3, athlon) and <1ms lag (fast LAN, or localhost). it does not work with all games. some games that work are tetris, pokemon, mortal kombat. You can send me email: your system specs, OS, network specs (if applies), the game, and if it does work, or if it does not work. don't ask "when do you support (name of game)", i don't know. on one bgb, you select "listen", on the other you select "connect". it should then show "linked" in the titlebar. there is also an option "remotejoy" so joypad 2 of one bgb controls the other bgb (which does not have keyboard focus, for example).
version history:
1.03 -
Emulating hardware behavior for "gin & tonic trick" in the "mental respirator" demo by Phantasy.
Fixed the "on blt2: action not supported" problem which happens on some videocards - if it still happens for you, please contact me.
Added 24 bpp directdraw support.
Made joypad wizard better support "broken" controllers with things like flickering buttons (must press button for 0.5 secs).
Added optional screen on startup to tell the user what to do.
Added "cpu idle" wait for vblank routine - if it's not smooth on your pc, disable "reduce cpu usage".
Added support for up to 32 joypad buttons.
1.02 - fixed a bug in the emulation core which may have broken roms. added japanese documentation (thanks, translator). show error if trying to add duplicate cheat code. allow saving disassembler output to text file.
1.01 - fixed "Cannot change Visible in OnShow or OnHide" bug. fixed bugs related to gamegenie cheats and cheats GUI. fixed problems/bug with window/fullscreen behavior.
1.0
- added debugger
- added cheat searcher
- added optional directdraw and directsound support.
- greatly improved accuracy/compatibility/rom support, fixed many known problem roms.
- added "GBC + initial SGB border" support, allowing a number of GBC roms to show a border.
- added experimental support for sub-scanline timing graphics, "demotronic demo" works perfectly.
- new, more accurate, extendable, save state format. Old states are automatically converted/resaved by default.
- made bgb faster by optimizing/rewriting parts
- added support for 4 gamepads.
- redone joypad config, easy to use GUI
- new GBC LCD colors, more like the real GBC
- lots of minor changes
0.9 - Color schemes can be edited. Increased precision of frequencies in sound code (alone in the dark intro interference effect). Centralized/wrapped sound output (waveout, disk writer) code. Fixed AV if showing registers w/o rom loaded.
0.88 - fixed: save file name gets corrupted if loading a rom causes a warning, making load/save impossible. added: you can now change the current save name, by changing the save dir in the options, without reloading the rom.
0.87c - fixed: the info screen still showed my old email adres...
0.87b - fixed: linkspeed was not initialized, causing problems when not linked, such as breaking alleyway
0.87 - added experimental TCP game link support.
0.86 - added support for japanese pokemon crystal. fixed: accessing a word on address $ffff caused AccessViolation. fixed saving of joystick buttons config. Redone code which searches GB screen rectangle in border bitmap.
0.85 - emulation of 2 joypads for SGB multiplayer. fixed memory leak when loading a rom fails. added support for gzipped roms. fixed some bugs in zip header code, bgb is less likely to hang on corrupt zips. new time synchronization code. sound bugfixes and accuracy improvements. Added option to use GB colors in SGB mode.
0.84 - Fixed pokemon crystal (HDMA behavior guesswork). Option for generating high quality anti aliased rectangular waves (CH1 and CH2).
0.83 - fixed some sound bugs introduced in 0.82. CH4 anti aliasing, especially CH4 high pitch tones sound better. Fixed a resize problem in wine.
0.82 - fixed "magical drop" and "miahamm soccer shootout". fixed "little mermaid ii pinball frenzy", speculation about HDMA behavior. rewritten sound code, improved sound. CH4 (noise) is more like real gb now. implemented anti emulator detection.
0.81 - redone STAT/timing/interrupts core, more accurate now (?), fixed *many* known problem roms. implemented DI+HALT hardware bug now, needed to fix smurfs/thunderbirds again (thanks no$gmb history text). "little mermaid ii pinball frenzy" graphics will be broken until i have exact HDMA timing. added "no visible window" mode (doubleclick in bgb window to toggle). GB screen can now be off-center in the border bitmap. SGB border can now overlap main screen in 16 bits gfx mode (alfred chicken). minor fixes/changes.
0.8 - Added SGB support. renamed "snapshot" to "state" to prevent confusion with "screenshot". changed I/O register behavior, it should be more like the real hardware, i might break something. fixed bugs. added options.
0.71b - i removed the hide taskbar code for fullscreen, i think its not needed. added support for "the smurfs" and "pocket puyo sun" (i didn't HALT if ints disabled)
0.71 - Added support for HuC1 and HuC3. Improved control panel GUI. The 4 sound channels can be enabled/disabled independently. Colors of background, window and sprites can be set. Improved full screen support. Bugfixes. Changed DMA behavior, "little mermaid II pinball frenzy" and "le mans 24h" both have correct GFX. fixed nintendo logo screen (ishido)
0.7 - improved compatibility, a number of problems fixed; tested: "legend of zerd", "magical chase", "elmo in grouchland", "faceball 2000" (framerate), "dragon slayer" (music). Emulation speed can be adjusted. added "delay" option so bgb doesnt have to use 100% cpu. emulation of absence of external ram (reads $ff). more cleanup.
0.66b - Saving zero length .sav files problem is fixed. save-filenames were truncated at first dot, fixed. problem with pressing U+D or L+R key simultaneously is fixed. Fixed problem of "Mr. do!" hanging at hi-scores screen.
0.66 - You can drag & drop files to the BGB window. BGB can start with no rom loaded - you don't get the load rom dialog.
0.65b - i did the changes from 0.64 to 0.65 again... this time i did yet another gfx engine, i didnt like 0.65 being 5 fps slower on my pc.
0.65 - Support for bilinear filter. removed the vram viewer; i didn't use it, and it was not stable. Fixed problems with "Mr. Do!". fix in gfx engine: dirty statusbar-split in "fortress of fear". small sound fix (broken in 0.64)
0.64 - minor update+bugfix. based on diagnose roms. Fixed speed of envelope sweep, it is now 1/64 sec per unit as in reality. sound registers now behave more like on real gb. OAM is now zero filled on reset, sprites were flipped incorrectly.
0.63 - minor update. Fixed (reversed) sound stereo. Added option for GBC "LCD colors", similar to the "real colors" option in no$gmb. Joystick buttons up to #16 can now be used. Fixed problem with puzzle road.
0.62 - Added support for joystick/gamepad. Added support for rumble carts. Cleaned up the LCD/STAT/interrupts code; a few rom problems solved, runs pinball deluxe/fantasies. Fixed sound volume rounding, better sound. Fixed the in 0.61 introduced sound problem with Cannon Fodder.
0.61 - Added support for zip files. Added 16 bits gfx engine for old GB (faster if window is big/maximized).
0.6 - Added GameShark support. Fixed many bugs. Great sound improvements (also fixed a bug which messed up the sound in GBC mode). Sprite priority as on real gb.
0.52 - Added a setting which automaticly switches between the faster 8 bits gfx and the 16 bits gfx when needed. Changed window behavior again, it should be correct by now (alfred's adventure). WAV writer didn't work if soundcard disabled... minor fixes. Fixed problem with Hook.
0.51 - fixed problems, even more roms supported, check out the screenshots page. Added "Tiles viewer". Fixed a problem with the filename of the wav-writer.
0.5 - Added hicolor GBC graphics engine. Added background priority support. Added MBC3 timer emulation. Problems solved, more roms run correctly. Wait-loop detection, some games run faster. Maximum frameskip option. BackGround map vram viewer. Minor changes.
0.4 - Added GBC support. Fixed bug in auto-frameskip code, it is now smoother. Minor change in video engine, "the addams family" and "starfight" now run.
0.32 - Added icon. Fixed serial transfer; Mortal Kombat and Alleyway now run. CPU optimized with assembler. Emulated behavior of window (startrek briefing screen). minor changes.
0.31 - Added support for MBC5 (games like warioland 2). Added gamegenie on/off key. Changed behavior of select snapshot window.
0.3 - First released version
feedback:
If you have comments, questions, hints or problems/bugs which are not described here, send me mail.