Breaking news: Trader Joe’s is currently selling banana pudding ice cream, and it is deeeeeelicious. This has nothing to do with emulation, but sometimes it’s 11:30 on a Saturday night and instead of reaching for a perfectly on-point anecdote it just feels right to tell you all about some really good ice cream. I mean, it’s not real banana pudding tier, which for me resides on a plane of existence so far above most things no this earth that I can’t adequately put it into words.
I can only justify this opinion by explaining that I grew up in Georgia and not liking sweet tea, Coca-Cola or southern Baptists, so I guess I min-maxed my southernness into Banana Pudding Appreciation. If we ever meet in person, know that the way to my heart is either talking emulators or how to make perfect banana pudding; henceforth we shall be brothers.
Pudding aside, what’s been happening the last couple weeks in the emulation scene? Over at the day job, I wrote about Dolphin’s post-mortem on the Steam takedown situation, and the dev team’s decision not to remove the Wii decryption key from its code. Personally, I believe the emulator team has a strong case that that number is not copyrightable and that Dolphin does not exist primarily for the purposes of bypassing encryption, and that it could prevail in a lawsuit were Nintendo to ever actually file one. That’s likely never going to happen, though, because it’s much easier and less risky for Nintendo to throw its weight around than to bring a legal challenge that could set a precedent in favor of emulation.
So it’s frustrating that Dolphin can ethically — and quite possibly legally — be completely in the right, but still be muscled off of a platform like Steam. “Cool copyright system we have here, huh? Would be a shame if someone broke it…” is the kind of thing a monocoled capitalist villain would say while chewing a cigar if it wasn’t already busted to absolute shit.
Since the last issue of ROM, the Xbox emulator community has essentially done an Icarus myth speedrun, figuring out how to bypass Microsoft’s security to upload emulators to Microsoft’s store and get them running on consoles. In the last two weeks this situation has escalated from the emulators themselves being banned to users themselves copping suspensions for having the emulators on their consoles. Announced in the Discord on July 27:
“⚠️ RETAIL MODE IS DEAD ⚠️
Effective immediately, we are halting any and all retail mode emulation, permanently… A significant amount of users have been receiving 15-day suspensions as a warning shot from Xbox. We STRONGLY recommend removing any and all emulator apps from your console in retail mode immediately (dev mode is unaffected). We apologise to anyone who got a 15-day suspension, we know it sucks.”
RIP, convenient emulation on Xbox consoles. You were too good for this world. But as an alternative, may I float five-frame-per-second Game Boy emulation on 1987’s hottest console, the NEC PC Engine? That’s in this issue, along with some cool cool toons and 4K videos of Pikmin 4 that make me drool.
Speaking of drool (sorry) if you happen to be going to this year’s California Extreme pinball/arcade convention in Santa Clara, California, I highly recommend Smoking Pig BBQ’s banana pudding. It comes in a plastic cup and it is perfect.
The Big Two
1. How Derek Pascarella & co. revived SNK’s Dreamcast rhythm game Cool Cool Toon with an English translation
The translators call it “the Dreamcast’s best music/rhythm game.” 23 years ago Edge magazine said it “played like an ambidextrous PaRappa, and looks like a 3D manga dream,” and Cool Cool Toon is definitely stylish as hell on top of being a fascinating relic of the fading Dreamcast circa 2000. I mean, SNK making a rhythm game that looks like a wilder Space Channel 5? After more than a year of work, Derek Pascarella and fellow translators popomocco and Cargodin and graphic artist Yuvi released an English translation. Before the release I asked Derek some questions about Cool Cool Toon, which I thought might’ve been a relatively easy side project considering he only recently finished translating SNK’s visual novel Nakoruru (which I wrote about in ROM here).
“Honestly, Cool Cool Toon didn’t turn out to be much of a palette cleanser, despite being a rhythm game,” Pascarella said. “It deceived the whole team! The game still boasts several thousand unique lines of dialogue, and that’s not even including the massive array of unlockable costumes available to players (which of course also required translation).
While I functioned as the project’s programmer/hacker, I can tell you that localizing things like character names, or the names of each of the 12 chapters (six per playable character) were among the toughest. Some examples include characters like Iyamy, also known as ‘The Four-Eyed Monkey’ (original transliteration ‘Spectacled Monkey’), or chapter titles like ‘The Lord of the Flitz’ (‘flitz’ being the game’s term for dancing, where we played off ‘Lord of the Dance’).”
Pascarella said that despite having less text than a visual novel, the rhythm game proved a real challenge to translate because of the playtesting challenge. “On top of that, several of the mini-games players must beat in order to progress through the story use a huge slew of seemingly random strings that are displayed depending on how the player is doing (among other factors). I cannot stress enough how difficult it is to identify which strings of text are displayed when and why, and then smoothly translate all of them so that they make sense in-game.”
There was one saving grace with Cool Cool Toon which Pascarella called “exceedingly rare:” native ASCII support. What that means for translators is that English characters can be displayed in half-width, vital for fitting enough letters on-screen compared to the denser Japanese text. Some existing code in the game let Pascarella push that further to create a proper variable-width font, ensuring a letter like ‘l’ took up far less space than an “M.”
So how do emulators factor in here? As with most fan translation projects, they’re vital tools for taking games apart and figuring out how they tick.
“My typical reverse-engineering process for the Dreamcast involves the Demul emulator in conjunction with Cheat Engine for real-time RAM inspection/modification. I also use LXDream-Nitro for step-through debugging of Hitachi SuperH-4 assembly instructions. Unfortunately, the Dreamcast is quite immature in terms of emulators with powerful debuggers, but the community (including myself) has found ways to stitch other tools together to make ends meet.
Once I have areas in memory that I’m interested in, I use Ghidra, a popular disassembler, to trace assembly code responsible for reading/writing that data. Depending on the changes I’d like to test, I often make assembly modifications (or write new assembly) in Ghidra, then export the game executable, and then rebuild the disc image. Alternatively, I sometimes perform quick tests by modifying the ROM section of the game directly in Cheat Engine (i.e., the contents of the game executable), then watching to see how the game behaves in Demul.
Each and every project I’ve worked on, whether for the Dreamcast or otherwise, has required the development of new tools. There exist common utilities for things like working with PowerVR textures used in the overwhelming majority of Dreamcast games, although every single game in the wild world of romhacking is different, thus requiring custom tooling to be written.
Common tools that must be created on a per game basis include things like archive extractors/rebuilders, text extractors/rebuilders, and file decompressors/compressors. I had to write all of the above for Cool Cool Toon, with the exception of the compression tools, which came from nanashi to address the game’s custom LZ implementation.
Ripping a game apart and then rebuilding it again to your liking is really where the magic is when it comes to this hobby. In the same way we programmers are speechless the very first time we see a program we wrote be executed on the computer in front of us, romhacking brings with it something truly special when we finally see our vision for something like an English translation patch realized before our very eyes, and by our own making.”
Pascarella gave translator Cargodin all the credit for suggesting Cool Cool Toon in the first place, rio de popomocco for translating with a deep knowledge of the game, and Yuvi for handling all the graphics that had to be reconstructed, modified with English text, and then inserted back into the game.
Pascarella has already started on his next project: the Dreamcast’s first Love Hina game. Good luck, Derek!
Thank you for reading Read Only Memo! Here’s a share button. I like it because it’s purple.
2. Meet the hot new Game Boy emulator for… the PC Engine!?
I’ve spoken with quite a few emulator developers who cut their teeth on emulating the trusty old Game Boy. It’s a simple, well documented 8-bit system, excellent to learn on, and trivial on the power scale for any PC. Retro game fan and developer Chris Covell, who’s lived in Japan for the last 20 years, is the first person I’ve ever interviewed who started with a Game Boy emulator but for the PC Engine (aka TurboGrafx-16), another 8-bit system that actually predated the Game Boy by nearly two years.
Hu-Boy is Covell’s first emulator, though not his first PC Engine hobby project. He’s made games, music visualizers, a digital zine, and more for the system over the years. His video introducing the Hu-Boy quickly introduces the level of challenge here: the PC Engine’s 7.16 MHz CPU is not a whole lot more powerful than the Game Boy’s 4.19 MHz chip, and the PC Engine has less RAM (though more VRAM), which seemed like a potentially sticky problem to my non-programmer mind. So I asked Covell how he pulled this thing off.
“RAM doesn't really factor into it — the PCE/SGX just needs someplace to store the GB's RAM. It all comes down to the relative complexity of the GB-Z80 CPU which has eight 8-bit registers that need emulating vs. the PCE 6280's three 8-bit registers that have to handle that data somehow. So the GB's registers have to be loaded and stored into the PCE's zero page RAM as pseudo-registers for each step of each instruction. I'm sure that makes for the greatest performance hit.
Probably on a more complex CPU like the 80x86 or ARM device, if a programmer ever wrote a GB emulator in pure assembly, they could keep all the GB's CPU registers emulated in the host CPU's vast complement of registers, keeping storing to RAM at a minimum.
Anyway, usually the rule of thumb for emulator developers is that to get full speed, the emulating system usually needs to have a clock speed about 10x that of the system being emulated. (Well the 32-bit GBA managed GB emulation decently enough at its 16Mhz, but the 7Mhz 8-bit PCE just can't get there...)
Seeing Game Boy games running on the PC Engine in Covell’s introductory video is incredibly novel, though performance is clearly too slow to be remotely playable in most games. Even with the emulator’s included options to disable some GB hardware features, we’re looking at the opposite of sick 144Hz Pro Gamer 🤘 power here.
Covell told me he might tinker with Hu-Boy a bit more to track down crashes in some of his favorite games, like Gargoyle’s Quest. “I do want to try to fix compatibility more rather than speed,” he said. “I could optimize reads and writes more using more lookup tables, so a small bit of a performance gain could be squeezed out of Hu-Boy. But as I wrote in my source code for myself:
;1/16/2023: I changed Fetch [PC] to use a lookup table...
; it sped up emulation about.... 0.5%.... :-( "
“This is the first emulator I've ever written, but I gather from other people making proper emulators that 99% of the stress is in fixing accuracy and bugs in games — that last 1% of the project which goes on forever.”
I asked if he plans to open source Hu-Boy, and that’s currently a maybe. So if you’d like to peek around in the guts of the first Game Boy emulator for the PC Engine, shoot Chris an email. Otherwise, you can read more about Hu-Boy and download it on his site here.
Ares adds savestate rollback and more - Ares v133, released July 21, continues the work of original author Near. This multi-system emulator continues to get multi-systemier, broadening its remit and compatibility. Here are the highlights from this update:
“It is now possible to undo the last save, or load, of a save state; this is intended to reduce the chance of data loss on accidental saving (easily possible when using a hotkey).”
MSX: “Added preliminary support for loading cassette tape software/games. Currently, this requires .WAV format audio data.”
Nichibutsu My Vision support added
“Added support for IPS softpatching, alongside the existing BPS support”
PCSX2 Burns out a tricky bloom problem - A recent PCSX2 update fixed a tricky implementation of bloom in the Burnout racing series, and developer Stenzek fixed it right now. I’m not gonna pretend like I understand what’s going on technically here, but I do like the sound of this solution: “So, I present to you, dear reader, the first state machine within a CRC hack, in all its disgusting glory. This effectively reduces the multi-pass effect to a single pass, by replacing the column-wide draws with a fullscreen sprite, and skipping the extra passes.”
The Wii U menu, now in Cemu - Emulators of old consoles don’t have much to worry about in terms of operating systems, but starting with the HD era the software consoles run other than games started getting a hell of a lot more complicated. Years after it could run Breath of the Wild beautifully, Cemu can now run the Wii U’s Fisher Price user interface, and swap games more like you would on a real console. Developer Exzap writes:
With this the Wii U menu is now actually usable as a launcher, although with caveats and limitations. Games that come with launchers, like Steamworld and Yakuza collection, are now playable too. There is also a "Stop emulation" feature but we won't be exposing this in non-debug releases until the title switching code has matured for a while.
Additionally there have been lots of improvements for the COS features required by the Wii U menu. It can now show the plaza topics and posts as well as the installed games (detected from Cemu game paths and mlc, same as Cemu's game list).
There’s even a video showing it off, and y’know, I might just miss that Mii plaza. 😔
MAME Avenges PDAs - MAME .257 dropped on Friday, and with it came a couple amusing updates, including support for several Psion “Series 3 clamshell PDAs” from the ‘90s. Pretty sure my uncle had one of these and it was: Cool.
More interesting to all you #gamers out there, MAME now more accurately supports Capcom’s Avengers, a 1986 arcade game that has nothing to do with Marvel but does involve beating up street thugs so it’s not that far off. For years MAME could only simulate some of the game’s code because MAME developers couldn’t figure out how it actually worked. The decades-old mystery was solved last year, as .257’s patch notes explain:
It was obvious that substantial parts of the game’s logic don’t run on the main CPU, but how it was actually implemented was a long-standing mystery. It turns out the cheeky boys at Capcom put an 8751 microcontroller under the sound module on the circuit board, and no-one noticed it hiding there until Phil Bennett spotted it last year! Since then, a microcontroller was sourced, and the internal program was exfiltrated by Caps0ff. Unfortunately, the data was damaged slightly, but it’s now running in MAME with a patch. This allowed the old simulation code to be removed, providing a better representation of the game’s original logic.
Flappy Pocket - Did you know there’s a Flappy Bird core for the Analogue Pocket? Well, there is. Do with this what you will.
What, you want more than the Cool Cool Toon patch above? Insatiable! Okay, how about an update on Boku no Natsuyasumi 2 from Hilltop Works? Hilltop recently spoke with the author of cool gaming newsletter Fan Service! and while there’s nothing brand new here, it remains the most exciting project going in my eyes and worth reading to get excited anew.
Over on Patreon, Hilltop recently mentioned that most of the technical challenges are now out of the way, so he’s tackling translation of the script with gusto.