Uncategorized
Updating Old Games
I recently re-posted a 2008 interview with a couple of guys who were updating the PC Engine version of Street Fighter. I recently talked to one of the devs who was doing this work – he’s picked up the project again after almost 18 years – and has recently published some tools and proof of concept work for another game for that same (almost) console: Ghouls n Ghosts. This was a game released for the SuperGrafx, which was a PC Engine with double the graphics hardware and four times the RAM.
It was released as a foil for Nintendo’s Super Famicom system, and only five games were released for it. Though it had some serious graphics chops, the games were hampered by the fast development cycle and the high cost of storage on the cards the games were released on. And so, with modern tooling and nearly 30 years of reverse engineering the old system, new ideas are being implemented, and Ghouls n Ghosts is getting an update.
The discussion is wide ranging, starting with an update on the Street Fighter project, talking about a couple of tech demos, and getting into the details of the Ghouls n Ghosts update.
Street Fighter 2
NFG: OK, so! Seventeen and a half years since we last talked about this project. It’s finished by now, right?
turboxray: If by “now” you mean a few months to a year from now, then yes, hahah. At first I wanted to fit everything back into the original rom size, by updating the graphics with new compression schemes. That’s a total downer and a chore. All we have to work with is 2.5 megabytes, there’s no option for expansion, and the original ROM is packed pretty tight as it is. Nowadays, we have gobs of rom space, and fancy flash carts, which means I can cheat a little and make it easier on myself.
NFG: Right, so, technology made it easier and you’re finally going to wrap it up Real Soon Now?


(Above: The original PC Engine background was missing some people. And some colours.)
turboxray: Yeah… A friend has been bugging me for over two years to just finish it. It feels like the right time to get it done.
NFG: That’s awesome news. What’s the current change list look like? What are the highlights?
turboxray: There are two things planned: the first is just to get the backgrounds replaced with all the awesome work FragMare did, and release that. Then start on adding SuperGrafx support two split up the background layers.
[NFG’s note: the SuperGrafx offers two background layers, and two sprite layers, one of each more than the original system. This will allow for more parallax than the original, and be closer to the arcade original.]
turboxray: I just uploaded a new public documentation repository for the SuperGrafx Ghouls n Ghosts update, so people can see how it works, follow along, contribute, or just fork it and make their own modifications. I plan to the do the same for Street Fighter 2.
NFG: So 18 years into the project and you figure a release is just a matter of time, then the extra SuperGrafx version is no trouble so why not?
turboxray: Pretty much! Get the ol’ gang back together. see if Fragmare wants to make any tweaks to the art, and put that third elephant back into the game! [NFG’s note: see original interview for that elephant].
NFG: What kept you from finishing this before now? It sounds like you’ve got a solid understanding of the PCEngine, were you just working on other projects?
turboxray: I’ll be honest… hacking isn’t all that fun haha. It can be frustrating trying to figure out the maze of code the developers left behind. Sometimes it’s easy, because they wrote clean code, but other times… yeah, not so much.
NFG: And it’s not like this is a small job. You’re replacing a lot of assets here. How many backgrounds have been updated?
turboxray: I think I have art assets for 4 stages. I don’t remember. I need to look. But I mean, once it gets rolling – we can take a look at everything again. I remember the focus, originally, was to fix a few stages to make them look better, not really overhaul everything. But the floor is open to anything now. Well, it’s not open to a resolution change like Ghouls – that’s a LOT of work.
NFG: So not much has changed since 2008, except that you’ve got better tools, you know more, and you want to get it out there?
turboxray: Yeah
One thing that came up in our discussions about the project is the PC Engine’s internal differences between RGB and composite video output. The PCE was very well designed and subtle tweaks were made to create good looking images on consumer TVs. Long after the new backgrounds were made for Street Fighter 2 some clever people worked out the differences between the two kinds of video produced by the machine, and now the new backgrounds have been adjusted to work with the system’s actual capabilities.
The slider below shows the differences. In particular, the purple in the cockpit window is more subdued with the RGB colours, and brighter with the composite video output.


Ghouls n Ghosts

From the SuperGrafx GnG Title Screen
NFG: What’d you do with SuperGrafx Ghouls n Ghosts (aka DaiMakaiMura)?
turboxray: The main thing for Ghouls was to implement wide screen mode and increase the resolution (to the highest dot clock of the system – super uncommon stuff). The PC Engine can match the 384 pixel resolution of the arcade original. We do this by cranking up the system’s display clock speed, putting out more pixels per line. That’s the first step.

Original SuperGrafx (left) and updated with arcade colours(right)
The second step is the game’s heavy color compression. To save storage space the sprites in SuperGrafx Ghouls only used 7 colors instead of the full PC Engine’s full 15 colors. Upgrading the game ROM to use the Street Fighter 2 mapper [NFG’s note: increases max game size from 8 to 20 megabits], now allows me to swap in higher fidelity assets with more colors. The documentation repository will hopefully serve as a guide for how to approach this kind of hacking on the PC Engine and SuperGrafx.
NFG: It blows my mind that the SuperGrafx could handle something close to the arcade original, and the biggest reason it wasn’t was storage cost.
turboxray: I want to get to the point where ALL assets are replaced.. once that happens, it wouldn’t be that difficult to port the rom to use the Arcade Card. [NFG’s note: the Arcade Card was a CD-focused RAM expansion card that offers 16 megabits of additional storage]
NFG: How far along is the project?
turboxray: The ROM can be built from what’s in the public repository already, and it expands to the full 20 megabits. The patches for the resolution changes are in place. The proof of concept to load replacement assets (the reaper character from the first level) is there. I didn’t include the new graphics themselves, because they’re Capcom’s.
turboxray: I’ll need to document how the new assets should to be arranged in a PNG image file, but people will have to supply their own graphics assets. At least for this repository – I want to avoid as many legal issues as I can, since I have a real job now haha.
Also, I noticed on The Cutting Room Floor that there’s a debug menu, which I may enable.
Other Projects
NFG: What else have you been working on? Your YouTube channel has some neat stuff on it. That Bonk parallax demo is amazing. The difference between this and the PC Engine version of Ninja Gaiden, ye gods. [NFG’s Note: Ninja Gaiden on the PCE had choppy, awful scrolling.]
turboxray: That’s a graphics engine I developed for the PC Engine, called HuSlayer.

Screenshot from a demo version of the HuSlayer graphics engine
NFG: I remember you talking about this a couple of years ago. If I remember correctly you completely ignore the system’s graphics facilities in favour of a CPU-driven method, is that right?
turboxray: Yeah, the entire foreground is sprites. The PCE is pretending it’s a Neo Geo
NFG: The Neo Geo doesn’t really have background and foreground layers as we know them, right? It basically uses the CPU to create the layers, and then just throws the whole thing into video RAM to be shown on the screen?
turboxray: Pretty much, yeah. The entire foreground is made of sprites, so while the hardware handles the background layer, I’m doing the foreground layer the Neo Geo way. It doesn’t really take a lot of CPU resources to draw the foreground with sprites. Normally, you only update the edges of the screen as you scroll, and the hardware does the work of moving the screen as required.
NFG: It seems like magic, doing all that work and getting these results, compared to the entirety of the PCE’s original library. What changed that allowed this? Is it a matter of modern thinking (I mean, the Neo did exist in the PC Engine days) or is it modern tools?
turboxray: It was just a matter of thinking outside the box. I have talked about how easy it would be to do this for at least the past 10-15 years, because this idea goes back that far. Other developers would be like “you can’t do that, it would flicker/drop out”.. and I was like, not if you fallow the rules. Then they’d say it’s just too complicated. Both things are false, it’s actually pretty simple. There’s no hardware trickery or low level hacking going on. This is just the PCE flexing what it could always do. We kinda saw glimpses of this in a few games, but not to this level. So yeah, totally a mentality thing.
You know, there’s study of psychology mixed with computer science called HCI. Human Computer Interaction. That’s the user side of things. But that same thing exists on the developer side, and when it comes to “raising the bar” for game development – if someone had done this way back, then it would have set a precedent, and the bar would have been lifted. Others would have copied it.
I feel like with the Super Famicom (SNES) and even Megadrive (Genesis) that bar got pushed fairly rapidly. I feel like it kinda stalled out on the PCE because some of this stuff is a no-brainer. Like the colors. I mean, the PCE has no problem gushing colors on screen, but why didn’t games do that? Even as they evolved into maturity? It’s so odd.
NFG: That makes sense. PCE development was in a weird middle space, better tier developers than the Megadrive, but the Super NES got all the money and much of the talent. By the time the PCE was a mature system, they weren’t putting the effort into innovative code.
turboxray: That’s actually one of the things that drew me into PCE developer/etc way back. I was like this is a gold mine! There’s so much you can do, that people would not have guessed. Like some the Dracula X (Castlevania) demo I’m working on – that would never realistically happen back in the day no matter what the scenario was haha.
NFG: And what’s that project doing? You’re doing animated, transparent flames on the first stage?
turboxray: Yeah, three layers of parallax and a full translucent layer. It’s almost done.
NFG: And this is two layers and all the translucence beyond what the PCE could do natively, correct? You’re coming close to re-creating the Super Nintendo graphics on a system that can’t do those things.
turboxray: Yeah! The translucent effect isn’t even pre-calculated or a pre-made animation either. The fire layer is only about 80k of image data.

Screenshot from the Dracula demo running on a standard PCE
NFG: That’s wild. And this is the standard PCE, with one background and one sprite layer, not the SuperGrafx with two of each.
turboxray: Yeah. I figured out how to draw lines from image data on the PCE very fast, which means I can do raster effects by choosing which lines to draw. It’s more like something you’d do on the Amiga.
NFG: That’s very cool.
turboxray: I think it’s important to make a distinction between the Dracula X demo and the Bonk demo. Bonk could very easily have been done back in the day using methods that were already understood. It helps to work on it now without the deadline pressure of big time game development.
NFG: What is the distinction between the two demos?
turboxray: The Dracula X demo is insane, it’s pulling out every trick you can imagine, and barely pulling it off. The Bonk demo, using my HuSlayer graphics engine, is dead simple, in concept and implementation. It doesn’t use any secret VRAM tricks or exploits.
--NFG
[ Oct 22 2025 ]
| Next Post | Navigation | Previous Post |
|---|

Name:
Email:
Website: