Comment by Kalendermann
10 hours ago
Really cool project! Since the hardware of the cartridge is fully customizable, wouldn't it be possible to port games that would normally not be playable on the GBC? You could add advanced hardware, that is nowadays so small that it fits on the cartridge, and the GBC would act more or less like a renderer of the pre-calculated output of those chips.
The biggest limit with these older consoles is the VDP/PPU. You can't just render directly to the screen because a framebuffer doesn't exist, instead you have to render to tile and then have the pixel pipeline render those sequentially to screen. So you're fundamentally limited by how fast that can update.
Systems with DMA like the Genesis could just act as a dumb framebuffer to whatever the cartridge decides to dump down the address lines. The Gameboy is a little more difficult, but could also theoretically do it as well if you decide to dump the FPS a bit and/or lower the resolution, and buffer the frames. Which is essentially what the faceball2000 devs had to deal with. And you can speed that up a bit by "racing the beam" (rendering the next frame to a previous tile as the next tile is blitting).
You may enjoy this Tom7 video about doing that with the NES:
https://www.youtube.com/watch?v=ar9WRwCiSr0
Probably yes, the NES is "easier" in this regard since char-rom is read from cart (so a cart only needs to provide the bits in correct order), the GB(C)'s have video-ram that contains all parts so you need to transfer it over. Don't exactly remember but iirc classic GB was a tad too slow for this, but GBC has a DMA that might be fast enough. (I've developed on classic GB mostly so don't know the characteristics of GBC mode).
I don't think it's widely known (only found and documented somewhat recently) that there is a way for cartridges to directly drive the Game Boy Color LCD, bypassing the CPU/PPU (PGB Modes). At that point though it becomes even less of a Game Boy game than what the Wolfenstein and other carts are doing.
https://gbdev.gg8.se/wiki/articles/Gameboy_and_Gameboy_Color...
Also related: "There oughta be GTA5 for the Game Boy" about a Wifi cartridge that can stream video (gameplay, etc) directly to the GB screen. https://there.oughta.be/gta5-for-the-game-boy
GBC had GTA2 port which wasn't half bad but the Driver port was smoother and with better mechanics.
I played a bit with original gameboy too. I was very surprised when, iirc, the cpu is not even fast enough to clear the screen in one vertical blank, or even in one frame! It takes like three to fully clear the map.
Yeah, you really need to structure your code around working with the tilemap system.
I did a small racing prototype with both vertical and horizontal scrolling and segmented my updates to 4x4 blocks of tiles per-frame (160x144 resolution so 20x18 of 32x32 tiles is visible at any point in time, so stippled updating 4x4 blocks outside of view is within the budget together with updating some of the tiles each frame)
This is false. You can do it in 1. It just involves mid-frame tile switching IIRC or using characters / sprites to fill in the rest.
1 reply →
Essentially, yes. You could even go further and make it like a 32X style add-on with a pass-through connector if you wanted to really save money. I guess one of these carts with a micro SD card socket on it would be the ideal.