It might seem impossible, but what you’re looking at is a Sony PlayStation game being played on a Nintendo Game Boy Advance. The resolution is miserable and the GBA doesn’t have nearly enough buttons to do most 3D games justice, but it’s working. There’s even audio support, although turning it on will slow things down considerably.
How does it work? The trick is that creator [Rodrigo Alfonso] is actually emulating the PlayStation on a Raspberry Pi and simply using Nintendo’s handheld as an external display and controller. We say “simply”, but of course, it’s anything but. The GitHub page for the project goes into impressive detail on how the whole thing works, but the short version is that the video data is sent from the Linux framebuffer to a small program running on the GBA over the handheld’s serial port using SPI. In testing he was able to push 2.56 Mbps through the link, which is a decent amount of bandwidth when you’ve only got to keep a 240 × 160 screen filled.
Perhaps the best part is that you don’t even need a flash cart to try it at home. [Rodrigo] is using a trick we’ve seen in other GBA projects, where the program is actually transferred to the handheld over the link cable at boot time.
Nintendo introduced this “multiboot” feature so multiplayer games could be played between systems even if they didn’t all have a physical cartridge, but now that hackers have cracked the code, it means you can run arbitrary code on a completely unmodified console; though it does get wiped as soon as you power it off.
[Rodrigo] provides all the information and software you need to try it at home, you just need a Raspberry Pi, a Game Boy Advance, and Link Cable you don’t mind cutting up; far less hardware than is required by the similar project to run DOOM on the NES. Since he’s tied everything into the popular RetroPie frontend, we imagine it would even work when emulating earlier 2D consoles; which would be a much better fit for the GBA’s display and limited inputs.
This is so cool and it had a great write up. I wonder a cartridge could be made using the same principle. And not be limited by the link cable speed.
That would be easy, have the cart (maybe with the pi zero in it already) include a couple of chips, one a flash rom that can be written too directly by a Pi and read by the GBA. The other a ram chip (wouldn’t need to be big, just enough to hold a image data matching the GBA screen rez at rgb555 color depth and a small amount of audio data) that can also be read by the GBA. Upon boot the flash is read and a small program is loaded that’s sole purpose is to grab the image data from the ram chip at 30/60 fps and to pass along the GBA button states on a separate pin. The pi, presumably booted before the GBA (or after I suppose, probably won’t matter) then writes image data and sound data to the ram chip in between reads.
I know this should work because others have done it already with other consoles. That’s where I found out about the possibility.
Hackaday, Tom. Can I ask you for a favor? Could you please cut down on the clickbait headlines, just a tiny bit, just a smidge? I get that you are a business and have to grab attention, and headlines need to be funny and/or interesting. But can you please draw the line at deliberately misleading?
Playstation on a GBA? Well of course not. So I already had to approach the article with the mindset of, “well that headline is clearly bullhockey, so what is this article actually about?” I almost stopped reading at “Raspberry Pi”, rolling my eyes because of course Raspberry Pi. And I would have missed out on an actually interesting project.
+1
+1
+1
/0
You knew it wasn’t actually a Gameboy advance. But I did enjoy the twist that it actually used the link bootloader and the screen. I wouldn’t have looked that up otherwise. So in the end, there was custom code ran on the Gameboy advance. It’s like cloud gaming, but on the novo-retro edge.
^^^ This man saved me reading the article.
I saw the title and was like huh. I wonder if he did some fudgery on the GBA to handle a limited port that’d be neat. Then I saw raspi. I assumed it was, looked I shoved a PI inside a case the equivalent of I’m a hacker because I have a screwdriver.
Haven’t read the article yet but I will now soley because of this comment otherwise I was out.
I don’t think it’s the sites job to cater to your poor reading comprehension or attention to detail.
+1
How is the title misleading? It doesn’t say the GBA is running the games. How else would you describe it?
“Pi and GBA Cooperate to Emulate a PlayStation”
+1
I too think HAD shoud stop writing things run “on” a device if the gutts are just replaced by something completely different. And there have been too many articles, certtainly headlines, beeing exactly this in the recent past. Not that I in general have something against nice (case)mods or hardware transplants. they can be interresting, too. But please make the headline fitting.
This is not one of them luckily. But the headline falls into the same pattern and thereby “destroying” the interest. And it’s still missleading cause the games do not run “on” the GBA of course. The non-modification way of running your own code and displaying external video through the link cable is indeed quite cool though.
Reread the description. This is a super cool hack. He is playing the games on a GBA. It’s not just a “stick a Pi in a GBA shell” hack. This is an unmodified GBA and he’s using the link cable connection to play the games from a Raspberry Pi.
He’s using the GBA like a thin client accessing software running on a server. All the GBA is doing is displaying the video and sending back control inputs, just like a cheap desktop PC can do with video editing software that’s actually running on a much more powerful server. Sort of like this https://en.wikipedia.org/wiki/Citrix_Virtual_Apps