Running Game Boy Games On STM32 MCUs Is Peanuts

Using a STM32F429 Discovery board [Jan Zwiener] put together a Game Boy-compatible system called STM32Boy. It is based around the Peanut-GB Game Boy emulator core, which is a pretty nifty and fast single-header GB emulator library in C99. Considering that the average 32-bit MCU these days is significantly faster than the ~4 MHz  8-bit Sharp SM83 (Intel 8080/Zilog Z80 hybrid) in the original Game Boy it’s probably no surprise that the STM32F429 (up to 180 MHz) can emulate this 8-bit SoC just fine.

Since Peanut-GB is a library, the developer using it is expected to provide their own routines to read and write RAM and ROM and to handle errors. Optional are the line drawing, audio read/write and serial Tx/Rx functions, with the library providing reset and a host of other utility functions. Audio functionality is provided externally, such as using the provided MiniGB APU. Although fast, it comes with a range of caveats that limit compatibility and accuracy.

For STM32Boy, [Jan] uses the LCD screen that’s on the STM32 development board to render the screen on, along with a Game Boy skin. The LCD’s touch feature is then used for the controls, as can be elucidated from the main source file. Of note is that the target GB ROM is directly compiled into the firmware image rather than provided via an external SD card. This involves using the xxd tool to create a hex version of the ROM image that can be included. Not a bad way to get a PoC up and running, but we imagine that if you want to create a more usable GB-like system it should at least be able to play more than one game without having to reflash the MCU.

Six GameBoy Pokemon games

Bridging Game Worlds With The ‘Impossible’ Pokémon Trade

Transferring hard-earned Pokémon out of the second generation GameBoy game worlds into the ‘Advance Era’ cartridges (and vice versa) has never been officially supported by Nintendo, however [Goppier] has made these illicit trades slightly easier for budding Pokémon trainers by way of a custom PCB and a healthy dose of reverse engineering.

Changes to the data structure between Generation II on the original GameBoy (Pokémon Gold, Silver and Crystal) and Generation III on the GameBoy Advance (Pokémon Ruby, Sapphire, FireRed, LeafGreen and Emerald) meant that trades between these cartridges was never a possibility – at least not through any legitimate means. In contrast, Pokémon trades are possible between the first and second generation games, as well as from Generation III and beyond, leaving the leap from Gen II to Gen III as an obvious missing link.

Modern players have already overcome this limitation by dumping the cartridge save files onto a PC, at which point any Pokémon could be added or subtracted from the save. Thus, this method relies on self-control as well as the right hardware. [Goppier]’s solution is arguably far more elegant, and requires very little extra hardware. A simple PCB with ports for older and newer GameBoy Game Link Cables is the physical bridge between the generations. An ARM Cortex microcontroller sits between these connections and translates the game data between the old and the new.

The microcontroller is required to translate the data structure between the generations, and seems fit for purpose. Not only does the Pokémon data require conversion, but a few other hacks are needed before the two generations will talk nicely to each other. Pokémon on the GameBoy Advance brought in new features such as representing player movement in the trading rooms (i.e. you can see the other player moving on your screen), which also had to be addressed.

The concern over the legitimacy of trades within the Pokémon community is a curious, yet understandable, byproduct of the multiplayer experience. As an example, modern players have to be wary of ‘hacked’ Pokémon, which can often introduce glitches into their game world following a trade. Apart from these issues, some Pokémon players simply desire genuine Pokémon as part of fostering a fair and enjoyable gaming experience.

This literal bridge between Gen II and Gen III game worlds brings the community tantalizingly close to a ‘legitimate’ means of transferring their Pokémon out of ancient cartridges and into modern games. Could Nintendo one day officially sanction Gen II to Gen III trades with a similar device? Crazier things have happened.

We love our GameBoy hacks here on Hackaday, so why not check out this project that replaces the battery-backed SRAM in your GameBoy games with FRAM?

Continue reading “Bridging Game Worlds With The ‘Impossible’ Pokémon Trade”

Cramming A DS Inside A Gameboy

Many holiday recipes and console hacks share a common theme: cramming a thing inside another thing. Whether it’s turducken or a Nintendo DS inside a Gameboy, the result is always unexpected. The chassis for this mod is a humble Gameboy color with a Gameboy SP screen tackled on the top to serve as the secondary display. Unfortunately, this mod lost touch screen functionality, limiting some of the games you can play.

[TheRetroFuture] received the custom handheld from [GameboyCustom], which was somewhat damaged in shipping. The original screw mounts had to be removed and the case glued back together to fit the DS motherboard. So for [TheRetroFuture] to get inside to start troubleshooting involved a razor blade and patience. Testing various points and swapping components got [TheRetroFuture] closer to the root problems. The fix ended up being a few wires that came loose during shipping. Finally, after reseating a display connection and some careful soldering, it booted and started playing games.

Overall, it’s pretty impressive to see Mario Kart DS running on both screens on the tiny handheld. But you might be asking, why? Why shove one handheld inside another handheld? Sometimes it’s to gain new functionality like this Raspberry Pi inside a PSP body. Sometimes, it’s just because we can. Video after the break.

Continue reading “Cramming A DS Inside A Gameboy”

the conversion from hynix SRAM to FRAM on a Pokemon Yellow PCB

Pokemon Time Capsule

The precious Pokemon we spent hours capturing in the early nineties remain trapped, not just by pokeballs, but within a cartridge ravaged by time. Generally, Pokemon games before the GameBoy Advance era had SRAM and a small coin cell to save state as NVRAM (Non-volatile random access memory) was more expensive. These coin cells last 10-15 years, and many of the Pokemon games came out 20 years ago. [9943246367] decided to ditch the battery and swap the SRAM for a proper NVRAM on a Pokemon Yellow cartridge, 23 years later.

The magic that makes it work is a FRAM (ferroelectric random access memory) made by Cypress that is pin-compatible with the 256K SRAM (made by SK Hynix) on the original game cartridge PCB. While FRAM data will only last 10 years, it is a write-after-read process so as long as you load your save file every 10 years, you can keep your Pokemon going for decades. For stability, [9943246367] added a 10k pull-up on the inverted CE (chip enable) pin to make sure the FRAM is disabled when not in use. A quick test shows it works beautifully. Overall, a clever and easy to have to preserve your Pokemon properly.

Since you’re replacing the chip, you will lose the data if you haven’t already. Perhaps you can use [Selim’s] Pokemon Transporter to transport your pokemon safely from the SRAM to the FRAM.

GateBoy Is A Game Boy Emulated At Gate Level

Old game systems are typically the most popular targets for emulation. With huge communities of fans wanting to recreate the good times of yesteryear, most old systems have all been brought back to life in this manner. However, some simply dive into emulation for the technical challenge, and [Austin Appleby] has done just that with GateBoy.

GateBoy is a project to emulate the Game Boy logic gate by logic gate. It’s a lower level approach that builds upon earlier work [Austin] did on a project called MetroBoy, which we featured previously.

The emulator was created by painstakingly reverse-engineering the logic of the Game Boy. This was done by poring over die shots of the actual DMG-01 CPU silicon. GateBoy emulates most of the chip, though avoids the audio hardware at this stage.

Presently, GateBoy runs at roughly 6-8 frames per second on a modern 4GHz CPU. As it turns out, emulating all those gates and the various clock phases at play in the DMG-01 takes plenty of processing power. However, compilation optimizations do a lot of heavy lifting, so in some regards, GateBoy runs impressively quickly for what it is.

[Austin] still has plenty of work to do before GateBoy is completely operational, and there are some strange quirks of the Game Boy hardware that still need to be figured out. Regardless, it’s a fantastic academic exercise and a noble effort indeed. Meanwhile, you might like to check out the Game Boy emulator that runs just one single game.

two hands holding a wider version of a purple gameboy advance

The Stretch Limo Of Game Boys

Here at Hackaday, we see all sorts of projects, some born out of a deep necessity or itch that couldn’t be scratched. Others are born out of a world of “why not” and it is perhaps these projects that put the biggest smile on our faces. The WideBoy Advance by [Elliot] of Retro Future is one such project.

Starting with a working Game Boy Advance and a donor one with a busted motherboard, the frankenstein-ification could start. A Dremel split one case in half and removed the sides on another, while trusty old car body filler helps fill and smooth the gaps. A particularly clever trick is to use the Dremel to create channels for the filler to adhere easier. Several areas had to be built up with filler and glued in bits of plastic as a base. As you can see in the video below, the countless hours of sanding, priming, sanding, and more priming led to a beautifully smooth finish. The choice of purple paint really sells the impression of a factory-fresh Game Boy Advance.

The working circuit board was desoldered and the donor board was cut into pieces to fit in the extended sides. Using some magnet wire, connections were bridged over to the original motherboard via the test points on the PCB. [Elliot] didn’t opt to swap the screen to an IPS display or add a backlight. These quality of life improvements are nice, but a dead giveaway that Nintendo didn’t make it. The goal is to get the user to wonder, even if just for a second, what if Nintendo just happened to make this wide one-off handheld console.

[Elliot] made it simply because he found it interesting and enjoyed the form of the thing he made. Is it a hack? Is it art? Probably a little bit of both. This isn’t his first modified Nintendo handheld either. He previously made a long Nintendo Gameboy DMG-01. We love seeing all the wild hacks and tweaks made to Game Boy line, such as this Game Boy Color inside the DMG-01.

Continue reading “The Stretch Limo Of Game Boys”

Building A Solar Powered Game Boy Pocket

Light has always been a key part of the classic Game Boy experience. Some of us have fond memories of riding along in the back seat of a car at night, pausing and unpausing the game as the street lights overhead briefly give enough light to see the unlit display. The availability of third party IPS displays for these classic handhelds has largely eradicated this problem today, but as you might expect, the increased power requirements of the more modern screen reduces the system’s runtime.

Installing the USB-C charge controller.

As part of their examination into energy production, the [Houston Museum of Natural Science] set out to see if they could improve things by adding a solar panel to the back of a Game Boy Pocket that had already been modified with an IPS display. The Pocket version of the Game Boy was selected as it has a nice flat back that made it easy to attach a solar panel, and in fact the panel sourced for this mod is so well dimensioned, it almost looks like the device came that way.

In the video below, you can see the modification starts by cutting away a large section of the Game Boy’s rear panel to fit the 1000 mAh LiPo battery. The solar panel is then affixed over the back with super glue. A diode is soldered onto the solar cell, and then wired into a charge controller that came with USB-C input. The placement of the charge controller ended up being trickier than expected, but with a little hot glue, it works just fine. Overall this is a simple mod but a brilliant idea.

This isn’t the first solar-powered handheld game system we’ve seen, but it’s nice to see the idea revisited and expanded on, particularly regarding ergonomics. In addition, we love the incredible detail of narration that’s given as this hack slowly takes shape. Video after the break.

Continue reading “Building A Solar Powered Game Boy Pocket”