That Game Cartridge Isn’t As Straightforward As You’d Think

Classic games consoles played their games from cartridges, plastic bricks that held a PCB with the game code on it ready to be run by the console hardware. You might therefore expect them to be an easy prospect for emulation, given that the code can be extracted from whatever ROM they contain. But as anyone with an interest in the subject will tell you, some cartridges included extra hardware to boost the capabilities of their games, and this makes the job of an emulator significantly more complex.

[Byuu] has penned an article exploring this topic across a variety of consoles, with in-depth analyses of special-case cartridges. We see the obvious examples such as the DSP coprocessors famously used on some SNES games, as well as Nintendo’s Super Game Boy that contained an entire Game Boy on a chip.

But perhaps more interesting are the edge-case cartridges which didn’t contain special hardware. Capcom’s Rockman X had a copy protection feature that sabotaged the game if it detected RAM at a frequently used save game address emulated by copiers. Unfortunately this could also be triggered accidentally, so every one of the first generation Rockman X cartridges had a manually attached bodge wire that a faithful emulator must replicate. There is also the case of the Sega Genesis F22 Interceptor, which contained an 8-bit ROM where most cartridges for this 68000-powered platform had a 16-bit part. Simple attempts to copy this cartridge result in the upper 8 bits having random values due to the floating data lines, which yet again an emulator must handle correctly.

It’s a subject with a variety as huge as the number of console developers and their games, and a field in which new quirks are constantly being unearthed. While most of us don’t spend our time peering into dusty cartridges, we’re grateful for this insight into that world.

We’ve visited the world of emulators a few times before, such as when we looked at combatting in-game lag.

New Life For Old Nintendo Handhelds With ESP32

The Game Boy Pocket was Nintendo’s 1996 redesign of the classic 1989 handheld, giving it a smaller form factor, better screen and less power consumption. While it didn’t become as iconic as its predecessor, it still had enough popularity for modders such as [Eugene] to create new hardware for it. His Retro ESP32 board is a drop-in replacement for the console’s motherboard and screen, giving it a whole new life.

[Eugene] is no stranger to making this kind of mod, his previous Gaboze Pocaio project did the exact same thing with this form factor, only with a Raspberry Pi instead of the ESP32-WROVER used here. His choice of integrated SoC was based on the ODROID-GO, which is a similar portable console but with its own custom shell instead.

This project doesn’t stop at the hardware though, the Retro ESP32 (previously dubbed Gaboze Express) also offers a user-friendly interface to launch emulators. This GUI code can be used with the ODROID as well since they share the same hardware platform, so if you have one of those you can try it out right now from the software branch of their repository.

If the idea of replacing retro tech innards with more modern hardware is something that interests you, look at what they did to this unassuming Osborne 1, or this unwitting TRS-80 Model 100. Poor thing didn’t even see it coming.

Micro-Sized Flex For Commercial Quality Bodging

We love watching the creativity unleashed by the democratization of once-exotic technologies. The casualness by which one can order a cheap, small run of PCBs has unlocked a flood of fine pitch components and projects which look commercial quality even with a total build volume of one. Now the once mythical flex PCB has been falling from it’s stratospheric pricing and with OSHPark’s offering it feels like we’re at the inflection point. [qwertymodo] leveraged this by creating a beautifully twisted flex to add link port support to the Super Game Boy

In the mid-90’s Nintendo released the Super Game Boy, a cartridge for the SNES which allowed you to play Game Boy games on the big screen. Each cartridge was in fact an entire Game Boy with the appropriate hardware to present it in a way the host console could interface with, but missing some of the hardware a standalone Game Boy would include like a link port to connect it to another system. This mod fixes this limitation by bridging the correct pins out from the CPU to a breakout board which includes the link port connector. For general background on what’s going on here, check out [Brian]’s article from April describing a different mod [qwertymodo] executed to the same system.

What’s fascinating is how elegant the mod is. Using a a flex here to create a completely custom, strangely shaped, one-of-a-kind adapter for this random IC, in low volume is an awesome example of the use of advanced manufacturing techniques to take our hacks to the next level. It reminds us a little of the method [Scotty] used to add the headphone jack to his iPhone 7 back in 2017. At the time that seemed like a technology only available to hackers who could speak a little Mandarin and lived in Shenzhen.

Detailed information on this hack is a little spread out. There is slightly more info in these tweets, and if you have a Super Game Boy crying out for a link port the adapter flexes are sometimes available here. Look beyond the break to see what the mod originally looked like sans-flex.

Continue reading “Micro-Sized Flex For Commercial Quality Bodging”

Novice Coders Can Create Classic Game Boy Games

It takes a lot of work to build a modern video game. Typically an entire company will spend months (at least) developing the gameplay, selecting or programming an engine, and working out the bugs. This amount of effort isn’t strictly necessary for older video game systems though, and homebrew developers are quite often able to develop entire games singlehandedly for classic systems. In the past it would have taken some special software, programming knowledge, and possibly hardware, but now anyone can build games for the original Game Boy with minimal barriers of entry.

The project is known as GB Studio and allows people to develop homebrew games for the 8-bit handheld system without programming knowledge. Once built, the games can be played on any emulator or even loaded onto a cartridge and played on original hardware if a flash cart is available. Graphics can be created with anything that can create a .png image, and there are also some features that allow the game to be played over a web browser or on a mobile device.

While it seems like the gameplay is limited to RPG-style games, this is still an impressive feat, and highly useful for anyone curious about game development. It could also be an entry into more involved game programming if it makes the code of the games available to the user. It could even lead to things like emulating entire cartridges on the original hardware.

Thanks to [Thomas] for the tip!

Continue reading “Novice Coders Can Create Classic Game Boy Games”

Circuit-Level Game Boy: Upping Emulation Ante By Simulating Every Cycle

Usually when writing emulation software for a system like the Game Boy, one makes sure to take as many shortcuts as possible in order to reduce the resources required for the emulation. This has however the unfortunate side-effect that it reduces the overall accuracy of the emulation and with it the compatibility with games on the system.

This is the basic reasoning behind projects which seek to abandon simplistic abstractions in favor of cycle-accurate, full compatibility approaches, of which MetroBoy is probably the most extreme one. Instead of abstracting away the hardware, it instead does the emulation at the circuit level. As with such other projects, this means that the emulator requires a lot more CPU cycles to get things just right. On the bright side, one can likely still run this emulator on any modern system.

As the MetroBoy author explains, he implemented code in C++ which allowed him to construct circuits in an HDL-style manner, which should theoretically also allow him to generate a Verilog (or VHDL) softcore out of the project. As a demonstration of implementing HDL in C++ it’s decidedly interesting.

An approach like this is pretty much the exact opposite of a project like the UltraHLE (ultra high-level emulator) Nintendo 64 emulator, which used the knowledge that Nintendo 64 games are written in C as a first step to creating libraries that the code in the Nintendo 64 ROMs would call instead of the native (Nintendo) libraries. This allowed N64 games to directly run on the target system, with the graphic and system calls translated by UltraHLE into native OS calls, using the 3dfx Glide API for accelerated graphics.

While an approach like UltraHLE took allows for the most minimal use of system resources by essentially foregoing emulation completely, for retro systems like the Game Boy where games were implemented in assembly on bare hardware, using this circuit-level emulation ensures that one gets the most accurate match with the original handheld console experience.

As a word of caution to those who are now itching to try out MetroBoy, its Github site notes that it currently lacks support for game saves, uses a mixture of original Game Boy (DMG) and Game Boy Advance SP (AGS) hardware that confuses some games and has rather buggy sound support.

If playing around with software-defined Game Boy circuits isn’t enough and would like to literally look inside a real Game Boy, the X-ray image from the top of the article is something Chris over at Elektronaut pulled off several years ago.

The Pocket Emulator That Will Fit In Your Pocket

If there’s one thing tiny Linux Systems on a Chip are good for, it’s emulation. There’s nothing like pulling out an emulation console on the bus for a quick game of old-school NES Tetris, or beating the next level in Super Mario World. This is the smallest emulation console ever. It’ll fit in your pocket, and it has a bright, vibrant screen. It doesn’t get better than this.

This project is an improvement on two projects, both of which are some of the top projects on hackaday.io, the best place on the Internet for hacks and builds. The Keymu is (or was, at the time) the smallest emulation console ever, built as a miniaturized version of the Game Boy Advance SP in a 3D printed case and powered by the Intel Edison. The Edison doesn’t exist anymore, so after that development moved over to the Funkey Zero, a tiny console built around the AllWinner V3s chip and a 240×240 display. Both of these are tiny, tiny consoles, but as silicon gets better there’s always better options, so it’s back to the drawing board.

The design of the Funkey Project is again built on the AllWinner V3S SoC with 64MB of DDR2 DRAM. There’s a 1.5″ display with 240×240 resolution, and of course this retro emulation console retains the classic and very useful clamshell form factor of the famous Game Boy Advance SP.

Already, this project is in the works and it’s shaping up to be one of the most popular projects on hackaday.io ever. Everyone wants an emulation console, and this is the smallest and tiniest one yet. Whether or not this project can carry through to production is another matter entirely, but we’re eager to find out.

Clock Mod Brings Super Game Boy To Competitive Arena

For one time small window between 1994 and 1998, you could play Game Boy games in color with a Super Game Boy. This was a cartridge that plugged into a Super Nintendo, and using proprietary Lock-On™ technology, you could play Game Boy games on the big screen. Inside the Super Game Boy was the guts of a real Game Boy. This was, and still is, the best way to experience everything from Kirby’s Dream Land or the Pokemon of Kanto.

Unfortunately, the Super Game Boy doesn’t exactly replicate the Game Boy experience. The crystal in the Super Game Boy means that games and sound run between 2 and 4% faster. The Super Game Boy is out for competitive speed running, and if you’re using Little Sound DJ, you’ll be out of tune with the rest of the band. The Super Game Boy doesn’t have link cable support, either.

Now, [qwertymodo] over on Tindie has the solution to the faster Super Game Boy. It’s a clock mod, but it’s not just swapping a crystal. This is a board that solders to existing pads, and still allows you to access the speed up and slow down functions available from the Commander controller from Hori. It’s a slightly impressive bit of PCB art, and certainly something that deserves notice.

This mod fixes the 2-4% speedup of the Super Game Boy, but then there’s still one feature missing: the link cable. Well, hold on to your butts, because there’s a mod for this one too. The Super Game Boy Link Port is a small little breakout board that requires fly wires to the main chip in the Super Game Boy. The installation isn’t quite as clean as the crystal hack, but if you’re fixing the clock, you might as well add the link cable port while you’re in there.

[qwertymodo] has a comparison test of the Super Game Boy running Pokemon Red, and this thing is dead on. It runs at exactly the same speed as an original Game Boy, only in color, on a TV. You can check that out below.

Continue reading “Clock Mod Brings Super Game Boy To Competitive Arena”