Back in the olden days, when video games still came on cartridges, the engineers and programmers making these carts had a lot of options. One of the most inventive, brilliant, and interesting cartridges to come out of the 90s was Star Fox for the Super Nintendo. Star Fox featured a coprocessor chip, the Super FX, that was effectively a GPU used to draw polygons in the frame buffer. Without this, Star Fox wouldn’t be 3D, Yoshi’s Island wouldn’t be as cute, and there wouldn’t be an always-on processor in your computer with the potential to spy on everything you do.
The Super FX chip, the Capcom-developed Cx4 coprocessor, and the Nintendo DSP all lived in a cartridge, but the technology to put a better computer in a cartridge never made it to Nintendo’s handheld devices. Cheap, powerful microcontrollers are everywhere now, and it’s not that hard to make a board with card edge connectors, leading [Anders] to build a Super FX for the Game Boy Color.
Game Boy cartridges are simple — just a memory controller and some memory is all you need. Drop in a microcontroller, and you have a Game Boy coprocessor. This cartridge features the MBC1 memory bank controller, 512kB of Flash, and 8KB SRAM. These are fairly standard parts, but there’s one last trick up the sleeve of this board: a KE04 from NXP, an ARM Cortex-M0+ microcontroller running at 48MHz . This microcontroller is, effectively, the GPU for the Game Boy.
This ARM-powered coprocessor is able to convert the framebuffer into tiles in just 2ms, giving the system plenty of time for image processing and rendering. Due to the limitations of the Game Boy, the best resolution offered by this coprocessor is either 160×96 or 128×128 pixels, short of the complete 160×144 pixel display in the Game Boy Color.
Even though [Anders] is still working on programming this thing to show off the power of his Game Boy coprocessor, he has a few demos to show off. The most impressive is a Wolfenstein-like clone. That’s extremely impressive and categorically impossible on a stock Game Boy Color.
That’s super cool. Now you just need to replace the arm0 with an ESP and use it as a streaming device for PC games. If you do the video conversion to 160×96 on the computer you could probably get some respectable response times.
Spoken like an OG Hackaday member.
????
VNC cartridge!
before we know it, sprite_tm has a new creation to show us…
That would be very cool and be a good basis for a April 1st prank youTube video. Gameboy runs crysis. ;)
…with the April Fools part being to see how many people you can convince it’s fake? Devious. :D
How retro.
Remember Final Fantasy Legend?
FF7 Remake on gameboy. #freshtrolling
or a drone controller.
You mean this one? http://hackaday.com/2016/08/21/fly-with-a-game-boy-classic/
The funny thing is that you would get much better results without the Gameboy.
But then it wouldn’t be a gameboy hack… I think you’re missing the point.
What should a coprocessor PCB do without the host system with screen and input devices?
Re-write the tiles buffer every few lines and you can get the full 160×144 pixels. With some more wizardry you could re-write the colours palette every line and get a lot more colours on the screen at once too.
That reminds me of writing coding demos from back in the day. It’d be awesome to see running on a gameboy.
Search for GBC demo, there’s a lot of them out there, they run on the real hardware. Pretty impressive stuff.
I think the article is either incomplete, or misinformed. The GBC is capable of producing 512 on screen “background” tiles. There are 2, 384 title VRAM banks. If you use an HBlank DMA you can load 144 tiles to VRAM during active display. The limitation could just be how much VBlank time you have to cram a single bank worth of tiles into ram.
Yis Yis more of dis.
I get the feeling that this is sorta trivial on a game gear, beyond getting it crammed in the cart, due to being able to address the display with composite signal direct… but not sure how you’d get control inputs through.
I like this.
That’s quite impressive actually.
Would be fun to see a Terraria clone or even a Minecraft clone on here now.
Nice. Now port DOSBOX to it!
Very cool project. I’ve been thinking to do something similar for the MSX-1/2 computers I’ve still have laying around. Would by nice to interface a PIC32 200 Mhz mcu with a 3.6Mhz Z80 :). Emulating an FM-PAC and SCC and some ROM while being able to interface with a PC over serial. Or replacing the video memory with dual access SRAM and writing to video memory using DMA on a PIC32. That would enable it to play video streamed over USB :)
I worked on a similar idea for the Atari VCS, but I got a bit out of my depth. I was able to fire out how to do it, but I could implement it properly.
An Arm cart has been done. Harmony and Melody. These ate mainly used just to emulate every type of bankswitched ROM and the Pitfall 2 SFX but thrre are some more advanced uses as well. A faster ARM and the more you can do.
This is really cool, because nobody ever hacks native interfaces and instead just replace everything with proto boards and stuff.
Have fun writing a game that implements it and is on par mechanically and visually with one of the mentioned. See you in some years.
He appears to be doing all the game logic on the Cortex M0. Fans of Russum know that a good hacker can get some pretty good results with that kind of setup very quickly.
Yeah but design and media for a game that is marketable takes a lot of time. Hardware throughput isn’t even half the battle. Starfox was coded by and modeled by a small army of talented people using a large budget, and it still took years time.
I speak as someone who has fought the battle as a single developer; making models, textures, animations, audio etc..
Coding is actually the easy&fun part.
All that said this hack is cool to me because of how he uses native bus and protocols. You rarely see this.
That’s due to the limits of developments tools of the time. I’ve worked on small teams doing 3D games in a weekend. Not quite a finished product, but then this kind of hack isn’t meant for commercial success. It’s just a fun thing that people do as a hobby.
Absolutely! My full time job is programming games, so I don’t intend to invest in the time to make a proper commercial game also in my spare time.
This is purely for fun and learning (and quite a bit of nostalgia) :)
Very cool project :) Keep up the good work!
Great, now just add a back panel that adds a couple of extra buttons on the back (L, and R, maybe?) and start porting Wolfenstein!
Well I was googling to see if anybody’s ever added a modern coprocessor to the Megadrive, I wondered if you could add a cortex m0 to a cartridge.
Wasn’t thinking 3D though, I was thinking
Super fancy 2D FX
2D physics modelling
A water manipulation game with fluid dynamics
Particles, lots of particles
Scary smart enemies
Have the Motorola do blast processing (lots of colours but no CPU time left) and the game run on the cortex.
WiFi multiplayer?