How the makers of CrankBoy finally cracked 60 fps Game Boy emulation on the Playdate

Plus: A fantastic anime series' DS tie-in gets an English translation.

How the makers of CrankBoy finally cracked 60 fps Game Boy emulation on the Playdate

This issue of Read Only Memo is coming to you from....... THE FUTURE!!!!

While it may look the same in your browser/email client as last issue did two weeks ago, everything's changed. Okay, one thing's changed. Ghost, the lovely publishing platform I use, just launched a big 6.0 update, bringing with it support for the open social web. The fediverse.

The thing that, uh, look it's pretty hard to sum up but it's Mastodon and Bluesky and Threads and maybe the modern evolution of RSS feed reading and either the thing that's gonna save the internet from siloed tech megacorp strangleholds or kinda just peter out and not actaully matter all that much a few years from now.

Hopefully not that latter thing!

Ghost's implementation of the social web is brand new and not, at this exact moment, what I'd call exactly easy or intuitive to tap into. But existing is the first step! And if you're real savvy about your open protocols and whatnot you might know what it means when I say you should be able to now read each new issue of the newsletter by following @[email protected]. At least that's what this card says!

Following on Bluesky's not as easy yet, but should be possible so hopefully I figure that out before long. The end goal dream for this is that the kinds of conversations that are so often split up between articles, article comments, social media posts, social media replies, etc. can all be connected together. I love that people still use RSS to read websites and newsletters like mine, but I'd also love it if those folks could more easily comment. There are now more than 2,600 of y'all out there, and I like hearing from you!

With all that preamble out of the way, I think it's about time we talk about some dadgum emulation. Our main story this week is a really fun one: I've talked to the folks behind a new emulator CrankBoy for the lil' yellow handheld that could, which I've been having a delightful time messing around with. It's such a good fit of device and play experience; Game Boy pixel art just looks awesome on the Playdate's unique 1-bit silver screen. Since this is a longer interview, we're sticking with a Big Oner instead of a Big Two this week.

Longtime readers may recall that ROM took an early look at emulators in development for the Playdate back in 2023, but it's taken a couple years for folks to figure out how to make the most of the system's intentionally limited hardware and get us here. It's come at a great time for the Playdate, though, as the second "season" of game releases for it just recently wrapped up. Playdate sickos now have a whole game library to pull from, too.

Naturally I reached out to the Playdate's parents over at Panic on the off chance they'd seen the news. Nobody from Panic, who said that while they haven’t tried it yet it looked really awesome, was willing to comment at this time.

And with that brain twister, let's jump into the action!

πŸ’Έ
If you enjoy ROM, I'd love it if you'd consider a small tip to help me cover my monthly costs. (Follow the link and click 'change amount' to whatever you want).

The Big One

1. CrankBoy is a crankin' good time on the Playdate

The prophecy is fulfilled: Game Boy emulation is now a reality on the Playdate.

Two weeks ago developers Sodium and stonerl released the 1.0 version of CrankBoy after months of optimization work to get games not just playable, but running with little or no slowdown. No easy task: while Game Boy emulation has been "solved" for decades at this point, the Playdate does not offer the kind of CPU grunt that developers can take for granted in even your average cheapo Android handheld today. (While megahertz obviously ain't everything, a $50 Anbernic RG 35XXPro gets you a 1.53 GHz quad core chip β€” vastly more performant than the Playdate's single 168MHz core.)

Naturally I had to hear what went into getting smooth emulation working on such a pared-down device, so I reached out to Sodium & stonerl for the inside scoop.

"A lot of people were speculating that the Playdate is too underpowered to be able to run a Game Boy emulator. But it turns out not to be true β€” the trouble is that until recently most people were not aware of what exactly the performance bottleneck on the emulator was," Sodium said. "Some people were saying the trouble is the display; some were saying the trouble is that that the CPU isn't fast enough; but after a user called StiNKz did some research and discovered that the real bottleneck is the size of the cache, I was able to make some huge strides in improving performance."

At the high level, those strides started with making CrankBoy's code compact. Like, really compact. When they started the project it took up a gluttonous 20 kilobytes, but the core now fits into "just 2kb of code." That's significant because the cache for Rev. A Playdate models (the ones Playdate shipped out to the first few waves of pre-orderers, which has slightly different hardware than Rev. B) has only 4 kilobytes of instruction cache. Sodium said that shrinkage paid off with games often running around 38 fps to 52 fps. A strong start, but not enough for a consistent 60.

There was more work to do, which Sodium broke down for me:

"PlayGB's author (Resolvi Productions) actually figured out that you can get a performance boost by taking advantage of a special area of memory called TCM (Tightly-Coupled Memory) to store the core data relevant for game boy emulation (things like emulated registers, some important pointers, and so on). This is a big gain for performance. I expanded on this base in two ways: Firstly, I found a way to keep the data in the TCM permanently (it initially seemed like there was no way to have the data in TCM persist between frames, so PlayGB was forced to copy all the data in and out once per frame). Secondly, with the emulator code now just 2 kb in size, I was able to store the code itself in TCM, allowing it to execute faster on Rev A models. It had previously been suggested that TCM wasn't capable of storing code, so nobody actually tried it."

You can read more about Sodium's optimization work in a post on the Playdate forums if you want to go even deeper on the programming. The attention to performance is clear when you use the emulator itself: it has an overclocking option to help counteract games that lagged on original hardware, a toggle that specifically benefits the Rev. A models since they have a smaller cache, and multiple audio options for balancing accuracy and performance.

"Depending on the channels being active, some games could drop up to 10 frames with audio being enabled," stonerl said about another big optimization challenge. "We tried to get the computing time for audio down as much as possible. For example the fast audio setting only uses an approximation instead of doing precise calculations for the Game Boy's audio channels which saves a lot of processing time. One tweak we discovered very late in development was, that instead of creating a stereo source and letting the Playdate downmix it to mono for the internal speaker, we just create a mono source and downmix the GB's stereo channels before it hits the Playdate. This would give us up to 2 frames extra."

I've been using an option that only refreshes the screen at 30 fps, but still runs games at full speed, to avoid any potential slowdown in demanding games like Mario Land 2 (overclocking and the "fast" audio setting make a big difference, too). It's a good feature to toggle on depending on the game, as Sodium explained:

"The Playdate's screen isn't able to completely refresh at a full 60 frames per second, so one of a few compromises must be made β€” either skip displaying every second frame (that's 30 fps mode, which is enabled by default), or use interlacing (to show every frame, but skip some scanlines). Games which don't have scrolling backgrounds (such as Tetris or pinball) can generally run at a full 60 fps, since they don't need to refresh every scanline every frame; most rows of pixels will look identical from one frame to the next."

Despite the months of work involved to optimize CrankBoy into a lean mean machine, it wasn't built from whole cloth: it's a fork of earlier emulator PlayGB, itself based on the non-yellow-handheld-specific Peanut-GB, which itself has roots in another emulator (hell yes open source software!). Some of CrankBoy's niceties originated in PlayGB: I particularly like how it lets you swivel the crank up or down to "press" Start or Select, since the Playdate doesn't have those buttons. But CrankBoy also added some really slick features, including:

  • Downloading game cover art
  • "Soft patching" ROMs with .bps/.ips files instead of permanently patching them; so you could have 5 different ROM hacks for a game on the Playdate and just apply the one you want to play in that moment, rather than creating a bunch of duplicate ROMs
  • Making a ROM appear on the Playdate home screen to launch directly
  • Some custom scripts for specific games like Link's Awakening that use the screen's wider aspect ratio to convert the UI to a sidebar (a stonerl special)

As you can probably guess, this isn't Sodium's first rodeo with the Playdate: She created the game Swap Machina which launched with the Playdate Catalog.

"I think the Playdate is a really cute device, and I love how hackable it is," she said. "I wanted to do what I could to contribute to the scene. GB emulation is in very high demand; people keep mentioning it (or the lack thereof) when reviewing the device. Also, there were various features I wanted to demonstrate to the world, like custom scripting for games, or the ability to do softpatching, which are not common features in emulators but I think they should become standard. Hopefully this will broaden people's perspectives on emulation a little bit, and other emulator developers will feel inspired to add those kinds of features as well."

Stonerl got a Playdate earlier this year and decided to poke around PlayGB to see how viable Game Boy emulation on the system really was. "I was kind of naive back then," he said. "But luckily I met Sodium on the Playdate Discord and it was a match made in heaven. I really wanted a Game Boy emulator worth using on the Playdate and thanks to Sodium’s ingenuity and skills we were able to get this off the ground."

The pair have more plans for CrankBoy and a to-do list here, though no big new features are in progress at the moment. Sodium mentioned RetroAchievement support to me, as well as the prospect of supporting Game Boy Color games that used some specific hardware elements not available on the original handheld. The Playdate has an accelerometer, which means the likes of Kirby Tilt 'n' Tumble are on the table.

As usual, you can grab the latest build on Github. If you'd like to support the continued development of CrankBoy, consider throwing a few bucks to the duo on Patreon!


Patching In

Azahar gets second-screen 3DS casting on Android – Why game on one device when you could be using two for twice the price? The latest build of Azahar supports casting to another physical device via Chromecast/Miracast, or using a physical connection. No more trying to cram two 3DS screens onto a single phone! I mean, unless you want to.

ShadPS4 says ffs, mpeg – While not yet in a milestone release, the latest nightlies for ShadPS4 contain fixes for artifacts in games using ffmpeg for movies, including Catherine: Full Body. Also added: remappable controller hotkeys for showing FPS, pausing, and going fullscreen. A contributor is also working on a garbage collector for the GPU based on a previous implementation in Switch emulator Yuzu; it's intended to clear out old data to ensure the GPU doesn't run out of memory.

Ymir Saturn takes some big steps with video options, raw screenshots and more – As featured a few issues back, young Sega Saturn emulator Ymir has added the ability to take raw screenshots, support for the Arcade Racer and Mission Stick peripherals, and "new video options to improve frame pacing in windowed mode and make better use of high refresh rates when synchronizing video." Some games have seen up to a 10% performance bump and the debugger's gotten some more useful features. There's a lengthy list of games that are either now working well for the first time or saw major bugs fixed, including WipEout XL, Last Bronx, Astal, Daytona, and Culdcept. Really impressive progress from developer StrikerX3. And there's a Discord if you want to follow along!


Core Report

Taki Udon's SS1 is coming along with some final iteration (and CD playback) – It ain't a PlayStation if it can't play CDs, even if it is running on an FPGA, right? Well, Taki's got that covered.

Rounding out the week with adding support for playing physical audio CDs on SS1. It works in any core with audio CD support in the BIOS.

β€” Taki Udon (@takiudon.bsky.social) 2025-08-08T09:52:37.828Z

The SuperStation Dock has also gotten a "big IO expansion port in the back for future hardware," a tantalizing addition indeed. The release of the system is still a ways out, but it's going to be a big moment for FPGA hardware when it lands. Supposedly the Analogue 3D arrives in just a few weeks, but I'll believe it when I see it.

Darth Vader and Batman have one thing in common – Okay, two things in common: they wear a lot of black and the latest MiSTer nightly builds of the Saturn and 32X cores fix freezes in their respective games (Batman Forever and Star Wars Arcade).


Translation Station

Mushishi for DS makes a game based on the series playable for the first time – This right here warms my heart. I have a real soft spot for the anime Mushishi, a contemplative series about a traveler who deals with local spirits by usually having a nice chat or something rather than fighting them Jujutsu Kaisen-style. It's soothing slice of life stuff, which of course means the Nintendo DS's tendency towards visual novels made it the perfect system for a tie-in game. Mushishi: Amefuru Sato is actually more of a life sim, though, with you hanging out in your quaint village and helping folks out and catching mushi via minigames.

I actually dug the ol' DS out of storage to give this one a try when I have the time. Which reminds me, I really gotta try the Tengen Toppa Gurren Lagann DS game one of these days. AGT Team, who just translated Musishi, also did that patch!

Ultraman Ball gets an extra-polished fan translation with Super Game Boy support – As a pinball fiend I'm always happy to stumble upon funky old virtual pinball games I've never played, even if they aren't very good (how many of them are, really?). One of the first games I popped onto CrankBoy was Super Robot Pinball, which got a fan translation a few years ago. So imagine my surprise when I checked out Ultraman Ball and figured out it is not in fact an Ultraman pinball game, but a platformer in which Ultraman rolls and bounces around in ball form? That's a kind of odd that a translation ain't gonna do much about... but hey, maybe it's for the best, as I've heard the recent Ultraman pinball table ain't too hot. (Sorry Steve! I know you wanted to love it).


Good pixels

How about a few more CrankBoy screenshots?

Mastodon