Sunday, March 18, 2018

Compatibility Issues within the Game Boy Line

In the beginning, Nintendo released the Game Boy and it took the world by storm.  Since 1989, Nintendo has released no less than 9 major followup products in the Game Boy line sold to the public in the eighteen years to follow.  The Game Boy line has a reputation for rock-solid backwards compatibility, but here we will explore issues with backwards compatibility in as much detail as I can find.




The original Game Boy, known as the DMG (Dot Matrix Game), had several CPU revisions during its lifetime.  There is the DMG-CPU (with and without Nintendo silkscreened on the chip), DMG-CPU A, DMG-CPU B, the glop-top CPU, the DMG-CPU C.  This site is a treasure trove of documenting CPU revisions for all the Game Boy models : https://gbhwdb.gekkio.fi/  These revisions are not guaranteed to behave identically, as shown here : https://youtu.be/GBYwjch6oEE?t=661  There are also two different 256-byte boot ROMs used in early and later CPUs.  Articially-created test ROMs that rely on edge cases aside, you can be assured that any official game released for the Game Boy between 1989 and 2002 will work on the original DMG.  Its successors have issues, some that are practical and others that are programmatic.  Let's review its successors in the chronological order of their release :

Super Game Boy

The Super Game Boy is the add-on for the SNES that allows you to play GB games on your SNES.  The SGB takes control over the SNES, but it has to dump its picture data to the SNES's PPU chips.  It can also utilize the SNES PPU to add colors to the GB sprites and background tiles, add colorful borders around the GB graphics window and read the 2nd SNES gameport for two player action and output more complex sounds from the SNES's S-APU.  The SGB uses the SGB CPU 01 chip.

The first SGB derives its clock from the SNES's clock.  The SNES's master clock runs at 21.477270MHz and the SGB divides that by 5 to come to 4.295454MHz.  A handheld GB runs by a discrete 4.194304MHz clock crystal.  Despite the 2.4% speed increase, the SGB seemingly will never crash when running GB software.  Even those games like Pinball Fantasies and Pinball Deluxe, which cause emulator authors nightmares with their pesky edge cases, will run on the SGB.  Audio will be slightly higher pitched.

There is some stuttering with the SGB if you know what to look for.  This is because the SGB is running at a 61.17Hz frame rate while the SNES can only output at 60.0988Hz.  The SNES has to drop a frame every so often to keep in sync with the SGB.

There are ways to modify the SGB to accept a true GB clock signal and restore the Link Port functionality.

When it comes to screen effects, there can be some flickering on the SGB that would not be visible on the GB.  The GB outputs to a passive-matrix LCD while the SGB outputs to a CRT.  These displays have very different refresh characteristics.  Serpent has a very flickery attract demo mode and Chikyuu Kaihou Gun ZAS has very flickery backgrounds in stages 1 & 3.  You can also see a few lines flicker in the first horizontal scanline in Super Mario Land.

The SGB will work with peripherals like a Game Boy Camera and has a custom background for the Camera, but without the ability to freely move the Camera, its functionality will be limited.

While GB, GBC and GBA cartridges and consoles are region free, the SGB and SGB2 are the exceptions.  The SGBs are region locked by shape (Japan & Europe vs. US) and lockout chip (Japan & US vs. Europe).  Moreover, when you try to load the SNES game inside Space Invaders, it will give you a SNES lockout screen if you try to load a European cartridge with a US SNES or a US Cartridge in a European SNES.

Game Boy Pocket & Light

The GBP (a.k.a. MGB) is a compact Game Boy in almost every respect.  The screen has greatly improved contrast over the DMG but also tends to have more prominent vertical streaking.  Sound and control are not as good as the DMG.  This uses the CPU MGB chip.

No compatibility is lost with official cartridges, the Game Boy Camera or first party peripherals like the Four-Player Adapter due to the existence of Game Link converters.  Some peripherals use the DMG's larger form factor and will not fit the GBP.  The Power Plug socket is smaller on the GBP than the DMG and only requires 3v instead of 6v.  The Game Genie works with the GBP but it is huge by comparison.  The embedded boot ROM in the GBP CPU is the same as the DMG with the exception of 1 byte which serves to identify the GBP vs the DMG.

If there is an achilles heel to the GBP, it is probably its use of AAA batteries.  AAAs hold about half the mAh capacity of AA batteries, presenting difficulty to powering the system with power-hungry Flash Carts & backlight and bivert mods.  Other people were always complaining about issues with the GB EverDrives until Krikzz released the X series v.2s.  Krikzz measured the time it took for the GBP to get from 0-5v and found it took 35ms vs. 5ms for a GBC.  This caused the FPGA in the EverDrives to refuse to load the FPGA configuration, so a hardware revision was required to get the EverDrive GB X series to work reliably with the GBP.

The Game Boy Light is essentially a GBP that uses AA batteries and an electroluminescent backlight and does not appear to have this issue.  The backlight will add a little noise to the audio output when turned on.

Super Game Boy 2

The Super Game Boy 2 was only released in Japan.  It adds new borders, a link port, and a power LED.  It also restores the original GB speed by using a discrete clock crystal on its PCB instead of using the SNES's master clock.  The result is that games play at the "ideal" rate and audio will play back at the same pitch as it does on handheld GBs.  The SGB2 uses the GBP CPU and will identify itself as such. It uses the CPU SGB2 chip.

Skipping is less noticeable on the SGB2 than the SGB.  However, the SGB2 is outputting at 59.7225Hz and the SNES outputs at 60.0988Hz, so at some point a frame must be repeated to make up the difference.  The SGB flicker is still present.

Game Boy Color

The GBC (a.k.a. CGB) is slightly larger than the GBP (except for the screen) and uses a Thin Film Transistor panel as opposed to the Passive Matrix panels of the DMG and GBP.  TFTs can transition between "on" and "off" far more quickly than the electrode-driven liquid crystals found on PM panels.  Ghosting and streaking are virtually eliminated on the GBC's TFT, although color looks rather watched out due to the non-backlit screen.

The GBC eliminates the contrast wheel found in the DMG, GBP and GBL.  The embedded boot ROM has a lookup table which can check the IDs of original GB games and apply special color palettes to some of the games.  The GBC also has an infrared port for communication with games that support that feature.

Hardware compatibility with Game Boy software took a hit with the GBC.  The GBC and later console's TFTs will display flicker with games like Serpent, Super Mario Land and Chikyuu Kaihou Gun ZAS, although the flicker is not quite so bad as it may appear on the SGBs.  More serious compatibility issues come in two categories :

Graphics Glitches
Donkey Kong Land 1-3 - glitchy horizontal lines in sprites

Unplayable Games
Legend of Zerd - Crashes
Road Rash - Crashes when starting a race
Burai Fighter Deluxe - Kills character almost immediately when first boss appears.  There is a GBC only colorized re-release called Burai Senshi Color.

In addition to the above, the GBC sound hardware can behave differently from the DMG/GBP.  Avoid PCB revisions CGB-02 & 03, they will break Prehistorik Man's music.  These revisions also have an issue where a part of Final Fantasy Adventure's music will cut out until another piece of music is begun.  This issue also occurs with Final Fantasy Legend 2.  The bonus points sound in Panel Action Bingo will also be cut off.  You can find the PCB revision ## of the GBC by opening the battery cover and looking for the number in one of the holes in the plastic for the lower battery cradle.

GBCs use CPU CGB, CPU CGB A, CPU CGB B (the buggy one found in revs 02 & 03), CPU CGB C, CPU CGB D & CPU CGB E chips.

Because the GBC and later boot ROMs clears the Wave Channel RAM and the DMG & GB's boot ROM does not, R-Type will sound slightly different.

Game Boy Advance

The GBA (a.k.a. AGB) runs GB/GBC games with a border on all four sides of the screen.  The screen can be stretched horizontally with the L and R buttons, but the result is rather ugly to look at and too easy to perform the function by accident.

The GBA is essentially a GBC when it comes to compatibility, but the GBA does not support the GBC's infared sensor.  The list here of games which use the sensor is reasonably comprehensive : http://www.mobygames.com/attribute/sheet/attributeId,178/p,11/

The GBA is incompatible with Chee-Chai Alien (requires the infrared sensor) and Pocket Music (uses music hardware in a way incompatible with the GBA, so a separate version was released for the GBA).  There is a patch to get the GBC ROM of Pocket Music to work in a GBA : http://gbdev.gg8.se/files/musictools/Pocket%20Music%20fix/
The drums in Shantae have also been reported to be effected by the GBA's music hardware, but I have not been able to determine if any differences are caused by the audio hardware or the amplification/filtering output.

When the GBA was first released, Nintendo made a list of GB/GBC games which had bad or glitchy sound with the GBA :

Densha de Go
Densha de Go 2
Hamster Paradise 3
Hamster Paradise 2
Disney's Tarzan
Sakura Taisen GB
Koro Koro Kirby
Doreamon - Study Fighter 99 Games
Japanese Chess
Battle Athletic
Game of Go
World Soccer GB2
Tokimeki Memorial Pocket: Chapter of Culture
Tokimeki Memorial Pocket: Chapter of Sports

Of these games only Disney's Tarzan was released outside of Japan.  In addition to the official list, Pti Fighter, Ren & Stimpy: Veediots! and Top Rank Tennis also have incorrect sound on a GBA.

Bionic Commando - Elite Forces has weird saving and loading issues with a GBA but is solid with a GBC.

The GBA is the last Nintendo handheld system to be powered by regular batteries.  Use of certain peripherals can have quite the draw on standard Alkalines, so you may want to use Lithiums if you are using power hungry peripherals like the Play-Yan video/audio player cartridge.

The GBAs use CPU AGB, CPU AGB A, CPU AGB A E, CPU AGB B & CPU AGB B E.

Game Boy Player

The Game Boy Player is an add-on peripheral for the GameCube which allows you to play GB. GBC and GBA games on your GameCube.  The official Game Boy Player software is not ideal, it runs progressive mode GB/GBC/GBA games in 480i by default or 480p with Component Video cables and a monitor which can handle 480p.  These systems should be played in 240p through the superior alternative the Game Boy Interface.  The official GBP software has high controller reading latency and rather fuzzy video output.

The standard GameCube controller is not ideal for GBA games.  The standard controller's D-pad is extremely small and the shoulder buttons are analog on the GameCube where they are digital  on the GBA.  The best alternatives are the Hori GameCube Game Boy Player Controller (pricey) or the Game Boy Advance to GameCube link cable.

Due to its nature, the GBP has limitations with various cartridges.  The gyroscopic motion control games, Kirby's Tilt 'N Tumble, Command Master, Koro Koro Puzzle Happy Panechu!, WarioWare: Twisted!, Yoshi Topsy-Turvy do not really work with the GBP.  Similarly, the functionality of the Botkai games and Game Boy Camera are likely to be very limited.  You won't feel the rumble from GBC carts.  Game Boy Advance Video cartridges are artificially prevented from playing in the GBP.  The Game Boy Interface can run the Video cartridges and is a superior solution overall to the official disc.

Unlike PAL SNESs, which are limited to displaying 50Hz, a PAL GameCube can display 60Hz and can output in RGB without the ridiculously expensive Component cables.  The official GB Player boot disc is not region free, so you may need to use the Game Boy Interface.

Game Boy Advance SP & SP Back-lit

Kirby's Tilt 'N Tumble and Command Master are difficult to play on GBA SP due to reversed motion control directions and the hinged lid (you have to flip the console to jump).  These games were designed for the GBC in which cartridges are inserted from the top.  The GBA SP inserts cartridges from the bottom.  One of the GBA Gamesharks will reorient the cartridge properly.

GBA games with a gyro sensor, Koro Koro Puzzle Happy Panechu! (via menu option), WarioWare: Twisted! & Yoshi Topsy-Turvy will work in the SP.

Games with colors optimized for the GBA non-backlit screen and GBA SP front-lit screen may seem either washed out or garish on the backlit GBA's screen.  Prime examples are Super Mario World and Castlevania: Harmony of Dissonance.  Patches for many of the worst offenders exist on Romhacking.net to get the colors either closer to the SNES or more appropriate for a back-lit GBA screen.

The e-reader accessory will work in the GBA SP, but the Game Link-passthrough connector will protrude above the system's enclosure.  Other large accessories may be awkward to use with the GBA SP, but should work.

Game Boy Micro

Utterly incompatible with GB and GBC games :(  It uses an even smaller Link Port than the Link Port used from the GBP to the GBA SP, so adapter cables will be required for these peripherals.  Given that the GBM did not sell in huge numbers, do not expect to find these adapters too cheaply.  There is also a special resdesigned version of the Play-Yan music/video adapter that will work with the GBM.  The Visteon Dockable Entertainment System, which is a portable DVD player with a GBA cartridge slot, also will not play GB & GBC games.  This uses the CPU AGB E chip, which unlike the Quad Flat Pack chips used in all prior models, is a Ball Grid Array chip.

Non-publicly Available Hardware - The Wide Boys

Nintendo made quite a few products that could play Game Boy games but never sold to the general public.  Development kits called the Wide Boy were made for the Famicom and later for the N64.  They function along the lines of the SGB and GB Player.

The Wide Boy was a very large PCB with the bottom half of a Famicom Disk System's RAM Adapter to connect to a Famicom.  It was connected via a ribbon cable to a Game Boy for control.  It was known to come in three varieties.  The first two used a custom controller that connected to a header on the PCB.  The PCB has a GB cartridge slot and a Link Port.  The third version has a D-shell port that connects a cable to a modified GB which acts as a controller and can also display output to the GB's screen.  Given that it could be hard to judge what graphics as displayed on a CRT may look like on the DMG's screen, this would have been a benefit to developers.  The GB CPU is always on the PCB.

When the Wide Boy runs, the Famicom is a slave to it.  The Wide Boy uses the Famicom's PPU to show the graphics generated by the GB CPU and will output GB audio through the Famicom's cartridge slot.  The Famicom controller can cycle through several monochromatic palettes, each containing variations of a hue or B&W.  Reverse colors are available.  The GB will display as a 160x144 pixel window within a 256x240 frame.  The extra active pixels will be turned into the border.  Unlike the SGB1, the Wide Boy runs at the original GB clock frequency and thus acts like an SGB2 (Famicom & Super Famicom use identical refresh rates in 240-line modes).

Nintendo also made a Wide Boy-like device called the Demo Vision which contained 1-2 Game Boy boards and 1-2 NES/Famicom boards inside an enclosure which allowed for head-to-head gameplay.

Nintendo next made the Wide Boy 64 for the N64, and it came in two varieties.  First game the Wide Boy 64 CGB, which as its name implies allowed you to play GBC games on the N64.  Second came the Wide Boy 64 AGB, which added support for GBA games.  Unlike the large PCBs of the Famicom Wide Boys, these Wide Boy 64s came in an oversized N64 cartridge.  They include link ports.

There appear to be two controller-style versions of the Wide Boy 64 CGB and the Wide Boy 64 AGB.  In one version, there is an IDC-style header that connects to a modified GBC or GBA via a ribbon cable.  This version uses the GBC or GBA to control the game and allows display to both the handheld and the TV screen.  A second version uses the N64 as a controller and omits the IDC-header.  I believe that the IDC headered version was sold to developers and the headerless version was sold to game magazines for taking screenshots.  The game magazines probably would not have found the dual screen feature as useful as developers.  The Wide Boy 64s exist in NTSC and PAL versions.

When using the The D-Pad, B & A buttons and Start button all functions just like the same buttons did on the GB/GBC.  The L & R buttons functioned like the L & R buttons on a GBA, including widening the screen for GB/GBC games.  The select button was mapped to all four C-buttons and the analog joystick zoomed the active screen in and out.

If you have the money for a Wide Boy 64, you will want to use it with an N64RGB or UltraHDMI-modded N64 because the stock N64 only outputs S-Video.  The De-blur option, as demonstrated by MLiG's RGB208 video, improves the image quality substantially.  Also, you may wish to disable anti-aliasing by hitting the Z button twice.  However, you can't disable the N64's dithering of solid colors, which can lead to flicker when scrolling.  The Wide Boy 64's frame buffer is more noticeable than the SGB or GB Player's.  MLiG adjudged the audio to be weak and tinny with no bass at all.  It is also passed through the N64 as analog audio, so the UltraHDMI won't play it back.

Virtually all the information for this part of the article came from MLiG's Game Boy video : https://www.youtube.com/watch?v=BjtD1mOZlPc&t=1237s and Chris Covell's pages and video on the Famicom Wide Boy : https://www.youtube.com/watch?v=zOF4Wm2_6oM

6 comments:

Anonymous said...

Thank you for the comprehensive overview. Would it be possible for you to add some information about the different Wide-Boy revisions? They are hard to come by and information is scarce.

Great Hierophant said...
This comment has been removed by the author.
Great Hierophant said...

I added as much information as I could find about the Wide Boys. RetroUSB released the RetroVision several years ago that essentially did the same thing as a Famicom Wide Boy except that it was far friendlier to NES 72-pin consoles. After a small batch no more were made, so they are now as rare as the Wide Boys!

Julien Oster said...

Does the original Game Boy have more than one clock? If not, I would expect that speeding the clock up by any amount would not change any behavior or break any compatibility in absolutely any case (unless you speed the clock up to the point where it causes actual hardware glitches). Without any other clock domain to interact with, all the Game Boy and its games know about are clock ticks, regardless of their duration relative to wall clock time.

Things break down much more easily for other game consoles, because of all the autonomous internal and external hardware they usually have to interact with. A Game Boy however does not even have to output a video signal with known timing, the DGB CPU directly drives an LCD display that accepts arbitrary timing up to its specs.

This lack of constraint on the DMG CPU's clock (if my assumptions are true) also conveniently allows the SGB to have the DMG CPU running at a different frequency derived from the SNES's clock, because it's much easier to have the SGB running synchronously with the SNES than to deal with the asynchronous clock domain crossing that would be necessary when keeping the original Game Boy's frequency.

Julien Oster said...

By the way, you say that "There are ways to modify the SGB to accept a true GB clock signal and restore the Link Port functionality", I wonder if the former is necessary for the latter, i.e. whether the 2.4% clock difference is enough to ruin Link Port communication? I don't remember whether the link cable carries any clock.

Julien Oster said...

Huh, I got curious about this SGB mod to restore the original clock speed, and apparently it is indeed just directly replacing the DMG CPU's clock? Guess the SGB is just scanning the display independently then, and the only reason for the differing clock speed is saving on parts... though I'd be curious to know if there aren't any graphical glitches from time to time when asynchronously scanning the display. Have you done this mod?