Sunday, March 17, 2024

FPGBC - The Budget FPGA Handheld


Portable or handheld devices which play retro video games are very common these days. Companies like Anbernic and Powkiddy make multiple consoles which can emulate some very advanced video game consoles. The Steam Deck and the Nintendo Switch can also emulate or run retro video games. These things are a dime a dozen these days and come in all shapes and sizes, but they all rely on software emulation. Until recently there has been one FPGA handheld console, the Analogue Pocket. In the past several months, a new challenger has entered the arena, the FPGBC from FunnyPlaying. In this article I will give my impressions of the device and review it on its own merits compared to the console it is trying to simulate, the Game Boy Color.

FPGA/FunnyPlaying

FPGAs simulating retro game consoles and computers is nothing new, the 1chip MSX used an FPGA back in the mid-00s and in the 2010s we have experienced MiST and MiSTer, the Analogue consoles, retroUSB AVS and CollectorVision Phoenix. FGPA-based retro computers have seen the ZX Spectrum Next and the Ultimate 64. FPGA design requires a different skill set than programming in C++ and the design of FPGA consoles is more complex because most of them can interact with original cartridges, controllers and some peripherals.

FunnyPlaying earned its reputation by supplying backlit screen mods for the Game Boy, Game Boy Pocket, Game Boy Color, Game Boy Advance. They also supply glass screen lenses, speakers, buttons, silicone pads and shells designed for their screen kits. They are an important player in the Game Boy modding community. In late 2023 this Chinese company released what must be its most ambitious product to date, the FPGBC. This is a Game Boy Color clone with a backlit IPS screen and no Nintendo-made parts or Nintendo-designed chips. It has a cartridge slot to play original Game Boy and Game Boy color games and its simulation of the Game Boy Color's hardware is handled by an FPGA. It does not have any ability to load ROMs, you need a flash cart for that.

Price and Ordering

The FPGBC is priced to appeal to the more budget-conscious retro handheld enthusiast. The base kit comes in currently at $69.90 USD on FunnyPlaying's site. The kit comes with the main PCB, a speaker, a rechargeable battery and a backlit screen. The kit does not include a shell, buttons or membranes, you can purchase them separately or reuse your own from another system or vendor. This a la carte approach may seem a bit odd but modders should appreciate the lack of bundling. While you can install the kit into an original Nintendo housing or other third party-shell, a not insignificant amount of alteration of an original shell may be required. Ordinary GBC membranes and buttons are compatible with the FPGBC. If you buy the shell, buttons and membranes from FunnyPlaying, that will cost you an extra $13.70. 

FunnyPlaying provides free shipping to the United States, so if you order from FunnyPlaying, you will pay $83.60 for a complete FPGBC. The package will be shipped from China, so if you do not wish to wait that long you can find the FPGC from more local sources like Retro Game Repair Shop. You will pay a markup for the privilege of faster shipping. I received mine in 11 days after my order, so unless you really cannot wait that long, order direct from FunnyPlaying and cut out the middleman markup.

The FPGBC is a very attractive option for people who want an original Game Boy Color-like experience but do not want to deal with the original hardware. An original GBC will likely be sold for around the same price in any retro gaming store these days compared to the cost of the FPGBC with all the necessary components for a fully functional system as shipped from FunnyPlaying. Then once you add on the cost of a backlit screen replacement, which runs about $60, a custom enclosure and the need for a soldering iron plus solder, you are pushing into Nintendo Switch Lite territory ($200).

Some Assembly Required

The FPGBC is only sold as a kit from FunnyPlaying, not a completed console. The good news is that there is no soldering required, an obstacle for many would-be modders. Even though the soldering is very basic for most screen mods and would be a good first soldering project for many, some people just do not want to solder. The speaker, battery and screen all have connectors that plug into the FPGBC's PCB, so you can build this without risking being burned by a hot iron or splashed by molten solder.

The FPGBC can be a bit tricky to put together, especially for first-time GBC modders. Instructions are not given, but Macho Nacho's video has an excellent (as always) video tutorial. You will need to find an appropriate tri-wing screwdriver or bit to use the screws included with the shell.

It took me about 45 minutes assemble my FPGBC as it came from the shipping box. The battery connector was the most difficult part for me to connect, the connector is tiny and requires quite a bit of force and the piece really needs to be aligned just right for it to fit in. You should install the speaker before you screw in the PCB, getting the gasket and the speaker in place properly is difficult once the PCB is partially covering the speaker hole.

One thing I appreciate about the FPGBC is that all the pieces of the kit were designed to work together. Modding original systems requires matching screens to enclosures and screen mounting brackets or trimming away plastic. With the buttons that Funny Playing sells is a matching color cover for the IR port. You can use that because Funny Playing has yet to implement the IR Port. An IR-appropriate colored cover is included with the shell.

The shells come with replica sticker labels which would be affixed to the back to an original Game Boy Color. Whether you wish to put them on a system like this is up to you. The front of the shell has the Nintendo logo embossed into it but the screen lens does not have the Game Boy Color logo or any logo or writing on it for that matter.

Look, Sound, Feel & Control

The build quality of the FPGBC when assembled is impressive for an $80 device these days. The shell does not feel cheap, the buttons are responsive and the screen is impressively bright. The color gamut of modern LCD displays is significantly greater than the reflective TFT LCDs of the original Game Boy Color and Game Boy Advance screens, so colors will look rather garish on this display. Using the pixel grid X4P mode is one way to make them less saturated. The buttons Funny Playing sells are a little stiffer than the originals. The rechargeable battery rattles around within the battery cavity as installed, I tore off a piece of foam from the packaging and put it underneath the battery to eliminate the rattle. I also appreciate the simple physical switch that turns the console on and off and does so quickly when the position is flipped.

The screen is larger than a GBC's screen. With the X4 or X4P modes, the screen size is approximately 6.8cm (diagonal) and with the Full option 7.5cm. An original GBC's screen is about 5.9cm. Frame interpolation leaves something to be desired, as there is noticeable judder with scrolling graphics that scroll smoothly even with other backlit replacement screens. When using the X4 or X4P modes, the unused pixels of the screen will show a border of a shade of black different than the border of the glass lens protector. Unfortunately the active display area is not centered within the "inner border", it is shifted upward relative to the center of the "outer border."

The speaker's volume can get louder than any GB, GBP or GBC. However at the loudest settings you will feel the speaker's vibrations and sounds can get distorted, especially if the device is laying on a hard surface. The headphone jack did not distort at even the loudest volume level, had low noise levels and sounded a bit crisper than the speaker. Stereo panning in Space Invaders was correct, not reversed. The volume wheel uses a rocker mechanism and each increase or decrease of the volume requires a separate shift upward and downward. Unlike a potentiometer there is no end to a rocker wheel's movement and the control is digital.

Features of the FPGBC

The FPGBC simulates the original Game Boy and the upgraded Game Boy Color hardware using its GOWIN GW2ARLV18EQ144PC. This FPGA houses the bootstrap code, the RAM, CPU, PPU and APU of the Game Boy Color. The console sports a cartridge connector, Link Port connector, a Volume/Menu wheel/switch, a power switch, a headphone jack and a USB Type-C power and charging port. The console is compatible with the game cartridges an original Game Boy Color is compatible with: Game Boy monochrome (gray) cartridges, Game Boy/Game Boy Color hybrid (black) cartridges and Game Boy Color-only (clear) game cartridges. The form factor is almost identical to the original Game Boy Color and there is a deep slot in the back to keep game cartridges secure. Like an original system, cartridges should not be hot-swapped, power down the system and then change the cartridge.

The only notable omission from an original GBC is the lack of the Infrared transceiver. These are the two LED-shaped parts, the lighter one transmits infrared light, the darker one receives it. The FPGBC has through holes to solder in these parts but it may require populating some of the passive pads nearby. There are no instructions on how to install these parts, so one assumes that this functionality is not in the FPGBC's firmware yet and may never be. Chee Chai Alien is unplayable without a functional IR transceiver and several other games support the IR transceiver for some purpose.

There have been three revisions of the FPGBC PCB, v1.0, v1.1 and v1.11. The firmware which is available for v1.0 will not work with v1.1 and v1.11 and vice versa. The main improvements of the v1.1 and v1.11 over the v1.0 are a more accurate clock speed and faster charging. The v1.1 and v1.11 use an external crystal for its clocking instead of the internally generated clock of the v1.0. There is an RGB LED in place of two colored LEDs for the charging indicator. The v1.11 only has very minor changes over the v1.1. You can replace a v1.0 PCB for a v1.1 through Funny Playing's store without having to buy a whole new kit.

Updating the firmware is straightforward. Turn the FPGBC on without a game inserted, plug it into your PC (or MAC, v1.1 or better required) where it will show a USB drive added, then copy over the update.bin file over to the drive and wait for the file to copy itself over. When the copying is done the screen should reappear and you can unplug the FPGBC from your computer. Certain 8bitdo controllers upgrade their firmware in a similar fashion.

There is a sleep/wake function that works by turning off the backlight and pausing the simulation. The console is put into sleep mode by holding down the menu button and awoken in the same way. The amount of battery life it conserves is debatable. The resumption of the game may come with graphical glitches depending on how the game was programmed.

The Menu

The FPGBC's built-in system On-Screen Display Menu is brought up by pressing the volume wheel in. Fortunately, unlike some backlight kit menus, this menu is navigated with the controller buttons (Up, Down B, A). The Menu features are as follows (as of hardware v1.1 + firmware v1.08):

  • Bklt: - Backlight/Screen Brightness, 10 levels
  • Vol: - Sound Volume (also controllable via wheel), 10 levels
  • DisplayMod: - Display Scaling: X4 (4x integer scale), X4P (4x integer scale with pixel grid) or FUL (full screen scaling) X4EMU (different palette), X4PEMU (different palette with pixel grid) FULEMU (different palette, full screen scaling
  • Core: - Core simulation selection: GB or GBC, requires Reset when changing Cores.
  • GB_Palette: - GB Palettes for Monochrome games, 12 built-in
  • Frame_Mix: - Frame Blending: On or Off
  • GB_ClrFix: - Display Compatibility: On or Off
  • Spd: - System Speed, 10 levels
  • [Firmware Version Number], Reset
  • [Battery Level Indicator], Save
The list above should be fairly self-explanatory but a few require more detail. The screen used for the FPGBC is not a native integer scale of the the original GB and GBC's 160x144 resolution. The X4 scaling options will upscale the native graphics to 640x576 with nearest neighbor scaling. The FUL scaling option is not an integer scale but eliminates any screen borders and makes the graphics larger. The display lens is laminated onto the screen and is black in color, so the thicker borders of the X4 mode should not be particularly bothersome as they blend in. There will be some shimmering with more detailed graphic tiles when the screen scrolls in Full mode, the trees in Super Mario Land 1-2 is a good example of where this happens.

v1.08 adds three EMU Display options which aim to more closely approximate the colors of an original GBC screen. The colors appear more muted but the color gamut is not significantly changed. The original GBC had a color gamut that was quite different from a modern screen but the EMU modes seem more designed to eliminate the oversaturation which comes with translating the pixels' RGB values with an Identity Matrix.

I have understood that the GB and GBC Core modes are intended to make the consoles behave more like a Game Boy and a Game Boy Color, respectively. A save then reset after this mode change system is required before this setting will take effect. Use the GB Core if you wish to use the FPGBC's built-in palettes with monochrome games. You also use the GB core to play the GB version of a GB/GBC hybrid game (the black carts.) GBC should be used for GBC only games or if you wish to use the GBC bootstrap palette choices. The FPGBC copies the special palette designations from the official Nintendo GBC bootstrap ROM. There is an unofficial firmware for the current v1.1/1.11 firmware, v1.06, which replaces the FunnyPlaying bootstrap animations with the Nintendo animations. 

You will often see glitches with monochrome Game Boy graphics using the GBC Core unless you set GB_ClrFix to On whenever you use them with the GBC Core. Similarly you will see glitches with GBC games unless GB_ClrFix is Off. Why this setting is even present is a mystery. Make sure to Save the setting so it stays persistent if you are playing more than one GB game in a row.

Frame Blending is helpful for those games which show a transparency effect on the original screens by rapidly redrawing images. Chikyuu Kaihou Gun ZAS, Levels 1 and 3 are good examples where this effect shows differently colored background objects but massive flicker on faster displays.

Speed sets the simulation speed of the GBC. You have at least one notch for overclocking and several notches for underclocking the system. Unfortunately there is no indicator which tells you what the official system speed setting is. Two shifts of the bar to the left (8 on the 1-10) is the official GBC speed.

Will the Real Game Boy Color Stand Up?

Compatibility

Many popular flash carts work with the FPGBC, but not all yet. The original EverDrive GB and clones of it has been frequently used in videos and my official EverDrive GB worked fine. My EverDrive GB X7 also works fine. Those are the only flash carts I personally own. The Nintendo Power GB cartridge has been shown to work. The EZ-Flash Junior may require a firmware update to get working with the FPGBC.

There are a pair of level translators for the cartridge data bus and some of the miscellaneous signals. 0-ohm resistor packs are used for the address lines. The FPGA can handle a maximum of 3.3v on its input and output lines, Game Boy and Game Boy Color cartridges are designed only to handle 5v signals. The data bus is bidirectional so level translators ensure that the cartridge gets 5v signals from the console and the FPGA gets 3.3v signals from the cartridge. Address lines are unidirectional, they go from the CPU to the cartridge, most cartridges seem OK with 3.3v signals on the address lines.

A Bug's Life - Each screen from the copyright logo to the menu takes nine seconds before it will display with GBC mode, longer with GB mode.
Alleyway - Paddle fails to move back and forth making the game unplayable (fixed in v1.08 and resistor removal, see below)
Altered Space - Screen transition effect incorrect
Boarder Zone - Flickering lines of pixels on left hand side of title screen
Castlevania II - Frame Mix On makes the mountains in the Cloud Castle lose monochrome shades (fixed in v1.08)
Conker's Pocket Tales - Stray pixels around sprites in GB Mode
Donkey Kong Land I-III - Glitchy horizontal lines in sprites in GB Mode (real GBCs show this too).
Magical Drop - Severe graphical corruption flickering in two-player mode.
Men in Black - Takes forever to get into the game, 20+ second pauses between each screen, longer with GB mode.
Pokemon Pinball - Screen does not shut off when the ball moves from the top table screen to the bottom table screen and vice versa.
Prehistorik Man - Minor graphical glitches on title screen (bouncing text wobbles), music on level introduction screens incorrect
Road Rash - Fails to progress into game in GB Mode (real GBCs behave like this too)
Star Trek 25th Anniversary - Borders of the viewscreen are misaligned (GBCs also show misalignment).
Super Mario Land - GBC custom palette partially incorrect (should be white instead of green, fixed by using unofficial firmware).
Toy Story Racers - Flickering on top of status bar at certain parts of races
Zerd no Densetsu - Crashes on first screen like a GBC in GB Mode.

There are patches to fix Road Rash and Zerd no Densetsu for GBC and the colorization patches can mitigate Donkey Kong I & II's sprite glitches. Donkey Kong Land III's Japanese release, Donkey Kong GB - Dinky Kong & Dixie Kong is a GBC only game, does not suffer from sprite glitching and a translation patch is available for it. Both A Bug's Life and Men in Black were programmed by Tiertex, I suspect other Tiertex developed GBC games will have similar issues but even I have limited patience. Considering how bad Tiertex's games are in general (Strider 2 Genesis anyone?), maybe the FPGBC is doing you a favor by delaying the start of these games for so long as to make you think they are broken on this console.

Peripheral and unusual cartridge compatibility was hit and miss. Kirby's Tilt 'n Tumble would get glitchy or crash soon after starting a game and the accelerometer would not calibrate the same way when set on a level surface as it does with an original GBC. Robopon: Star Version seemed to work fine. The Game Boy Camera had no issues. The InterAct/Datel Mega Memory Card worked OK but the GameShark Pro was unstable. My Game Genie might have worked but I do not believe the pins are making good contact due to the shapes of the Game Genie and the FPGBC's shells. The Game Genie works fine with my original GBC. 

Direct Link Port support was robust. Tetris, Baseball, Tennis, F-1 Race, Wave Race, Faceball 2000 and Tetris DX worked fine with a direct link, either to an original system or an Analogue Pocket. Nintendo Link Cables and Adapters and the Analogue Link Cable work with the FPGBC. 1st & 2nd Generation Pokemon games had no issues with either trading or fighting. 2nd Generation could successfully complete a trade with 1st Generation using the Time Capsule.

With the Four Player Adapter things were more mixed, it would not work with Wave Race with the Player 1 port, an original Nintendo system had to be connected to Player 1 but the game would progress if the FPGBC was connected in Player 2 or Player 3 ports. The system would crash Faceball 2000 or F-1 Race if connected to the Four Player Adapter. 

Benefits and Drawbacks Summary

Pros
  • Inexpensive
  • Original GBC form factor
  • Supports original cartridges
  • Functional link port
  • No soldering required
  • USB Type-C charging and updating
  • Official GBC Palette options for GB games available
  • Clean headphone sound
Cons
  • No IR transceiver
  • Need to put it together
  • Lowest price = slowest shipping
  • No ROM loading support or SD card slot
  • Occasional juddery scrolling
  • Compatibility issues to be addressed
  • Early adopter limitations with v1.0 hardware
  • Sleep/wake function of questionable value
  • Limited color gamut adjustment
  • Distorted speaker sound at high volumes
Conclusion

Is the FPGBC worth the $83.60 and the time to build it? If you own no original systems or do not want to install a backlight kit or IPS panel, then for the price it is a good purchase. It handles most common use cases well but if you want to explore the more exotic hardware and cartridges that an original system can handle, you may want to go elsewhere. If you have a Game Boy Color and the willingness and ability to mod it, then I would suggest the GBC Retro Pixel IPS LCD Kit 2.0 from FunnyPlaying. I am still impressed that Funny Playing was able to release a product of this quality almost right out of the gate.

Update 04/14/2024

Updating the firmware to v1.08 indicates that the Game Boy Printer is supported with removing a resistor on the FPGBC's mainboard. My Game Boy Printer printed out the photos at the photographer's house in The Legend of Zelda: Link's Awakening DX, the photos stored on my Game Boy Camera and the fortune teller in Super Mario Bros. Deluxe but I had to remove resistor R45 to get the latter two to work. Either the firmware update or the resistor removal also fixed the Four Player Adapter issues noted in the previous paragraph and also fixed Alleyway's controls.

2 comments:

  1. For some of us, it is not so much an aversion to soldering but rather a simple lack of tools. I would have to purchase a soldering iron (and accessories) in addition to whatever kit I wished to assemble, thus pushing the price even higher.

    As a Canadian, I am already forced to contend with the poor exchange rate and extra shipping costs. Needing to buy additional tools can make something too expensive to be viable.

    That said, even though I have no interest in this product -- I just do not like handheld games -- thank-you for an excellent, comprehensive review.

    ReplyDelete