A downloadable game for Windows, macOS, Linux, and Android

Download NowName your own price

DMG, the original 1989 Game Boy model, faces a new enemy: the Super Game Boy! Using your extensible hands, will you be able to grab and smash all the Super Game Boy minions who want to destroy you?


Unlock the hidden power of the Super Game Boy

This experimental game uses a Super Game Boy feature normally "locked away", and that no commercial Game Boy game ever used: the ability to control Super NES sprites in addition to everything moving on the Game Boy screen.

As you'll notice, all the enemies in this game are very colorful, more than anything the Game Boy Color or Super Game Boy can usually display. It's because they are Super NES sprites, overlaid on top of the Game Boy screen contents.

This feature was developed into the Super Game Boy, and was mentioned in earlier versions of the SGB development manual back in the 90's. But when the device was official released, Nintendo listed this feature as "use prohibited" and disabled it inside the SGB BIOS. Thus no officially released Game Boy game ever used it. Why did they disable such a cool feature?

Well, if you play this game you'll understand it right away: although this feature does work (the game can indeed control and display colorful SNES sprites in addition to everything else), it's flawed: the SNES sprites are constantly flickering. Up to 24 SNES sprites can be controlled at once by the SGB, but they will always be displayed once every 2 frames at best. That's why they look like "translucent" in the screenshots. I guess that the developers of the Super Game Boy never managed to have this feature running smoothly without flickering, so they simply disabled it when the device was commercially released.

The first (and only?) "Super Game Boy exclusive" game

This game uses several features unique to the Super Game Boy. In addition to the hidden "SNES Sprites" one, it also uses the SGB screen coloring techniques, and play some sounds using the SNES audio chip instead of the GB one.


So this game can only be played using a Super Game Boy 1 or Super Game Boy 2, and of course a SNES or Super Famicom to plug the device in. If you don't have real hardware available, several emulators can run this game too (see below).  And in case you're wondering, you CAN run the game on a Game Boy, but you'll hardly be able to play it: the game will not display any enemy, you'll lack several sounds, and of course you'll lose all the screen colorization effects.

How can I play this game?

If you have a SNES and a Super Game Boy at home, the best way to play is to use a Game Boy Flashcart (Everdrive, Inside Gadgets, EZ Flash Jr., etc.) or a manually flashed homebrew cart (Ferrante Crafts, etc.) with the game on it.  Hardware-wise, it's very small and simple: a 32Ko ROM requiring no MBC chip and no RAM chip. So it should be able to work on any kind of Game Boy PCB/cartridge you want to try it on.

If you have SNES but don't have to a Super Game Boy, there is one SNES Flashcart that can run this game as it's able to fully emulate a Super Game Boy: the SD2SNES / FXPakPro. The latest bios revisions offers SGB support, and thus you can run the GB rom on your SNES using all the Super Game Boy features, even if you don't have an actual SGB device.

Last but least, if you don't have any hardware at home, you can play this game using emulation. But not all emulators will be able to run it, as this game requires both a full SNES emulator (for the colorization, SNES sprites and sounds) and a Game Boy emulator (for the game logic and the GB graphics and sounds). So even the best Game Boy emulators like BGB that do support some SGB features (e.g. borders and multiplayer) won't be able to run this particular game, as it also requires a full SNES emulation.


So to play this game, you should use one of the following SNES emulators. They offer full Super Game Boy emulation as they embed a GB emulator inside the SNES one:
- Higan the most accurate of all, with the SNES sprite flickering very closely matching real hardware
- Ares a more user friendly version of Higan
- BSNES the most user friendly, but the SNES sprite flickering will sometimes be worse than real hardware or Higan, making the game harder to play
- Mesen S a more recent but also very accurate SNES emulator offering SGB support
- O
f course, besides individual emulators, you can also use RetroArch, who offers BSNES and Mesen S cores to deliver Super Game Boy emulation.

In addition to an emulator program, you'll also need the SGB1 or SGB2 BIOS ROM file to run the game. First you open the SGB1/2 BIOS ROM like you would open a regular SNES ROM. Then you'll be prompted to select a GB ROM file: that's when you can finally select the DMG vs SGB rom, and start playing.

How does the game "unlocks" the hidden Super Game Boy features of displaying SNES sprites?

If you're interested in the the technical side of things, you're maybe wondering how this game is using a feature that was disabled in the Super Game Boy BIOS before it was publicly released.

Well, the magic happens thanks to the effort and knowledge of a talented retrogaming hacker named Nenson Dubois, who, alongside others, reverse engineered the Super Game Boy BIOS. In doing so, they discovered that the code for the SNES Sprite control (called "OBJ_TRN") was still present in the Super Game Boy BIOS, but that it was simply "bouncing back" any attempt from GB games to enable this feature.

Nenson Dubois found a clever way to "skip" this protection, and thus to forcefully enable this feature. To sum up how he did it: another feature of the Super Game Boy is to modify any location of the Super NES RAM, a few bytes at the time. So by modifying a very specific location in the SNES RAM, the Super Game Boy will think that the "SNES Sprites control" have been enabled. It'll then run the "locked out" code of this feature like if it was never locked, allowing us to finally be able to see it action. If you want more details, you should read the full hack description here: https://www.romhacking.net/hacks/5709/

So thanks a lot Nenson Dubois for sharing your discovery publicly, this game wouldn't have been to possible to create without your work. And huge thanks also to the Game Boy and SNES homebrew scenes, who researched and compiled loads of knowledge about these two consoles, including details on how to use this hidden feature.  See the Pan Docs for the GB side (it details everything on how to set up the hidden SNES sprite feature, as it's quite convoluted to use after it has been enabled), and Nocash Fullsnes for the SNES side.

About this project

Since discovering the Nenson Dubois hack in 2019, I wanted to create a game using the SGB SNES sprite feature. This project was put into the backburner for a long time, until this summer when both a Game Boy (GB Compo 25) and a SNES (SNES Dev 2025) game jams were taking place. I saw this as a golden opportunity to make a game using both the Game Boy and the SNES hardware. It was the motivation boost I needed to finally start to apply Nenson Dubois hack to an homebrew game.

After managing to set it up and running it on real hardware (thanks Pan Docs), I was a bit disappointed to see that the feature, while very cool, was actually very limited in its current state:

For one, the SNES sprites are constantly flickering on screen. That's why I decided to have the game taking place on a plain white background: the sprites are a bit faded out, but you can see them. That wasn't the case when I tried to have a colored and/or patterned background. So this was disappointing, but not a deal breaker.

However, there another stronger limitation on this feature: you can't load new graphical data for the SNES sprites to display. The SGB does have a command to send graphics data to the SNES VRAM: that's how some games display "custom SGB borders". So, this command allow a GB game to send graphical data that the SGB will use to draw background graphics on the SNES. As described in Pan Docs, this same command should also be able to send graphical data that the SGB will use to draw sprites on the SNES (the background and sprite graphical data are not stored on the same location in SNES VRAM). But when they disabled the SNES Sprite feature, they also altered the command to send graphics data rendering it no longer able to send sprite data, only background data. That was a much stronger constraint for me in this project, almost a deal breaker! I mean, how useful can the SNES sprites be if they are "empty" and don't draw anything on screen?

But by experimenting more with the Super Game Boy, I noticed that, if you open the SGB menu (by pressing L+R at the same time), it will load graphical data representing the SGB menu icons in the "sprite" area of the SNES VRAM. Even better, this data stays in the video memory after closing the SGB menu and resuming the GB game! (by pressing L+R again). So that's when I had an idea: what about making a game where the SNES sprites are solely Icons from the Super Game Boy menu?

In searching for a gameplay idea, I decided to go with a spinoff / sequel of my 2019 game DMG Deals Damage. But instead of fighting other handheld consoles, our beloved DMG is now fighting against the Super Game Boy!

I also had some fun with the SGB screen colorization features. Each time you take a "life up" bonus, it'll change the screen colors, and let you play with different variations of the DMG model. First, you'll start with the original 1989 model and its iconic off-white color. Then, you'll play as all the models from the 1995 "Play It Loud!" series, so the same DMG console but with different shell colors.

An open source game

The retro games homebrew communities are wonderful places where people create new games for old consoles for the fun of it, and love to share their work and knowledge with others. So whenever I can, I try to contribute too by documenting and sharing the source code of my games, hoping it may help others to make their own games

In addition to the ROM, you'll find a zip file containing the fully commented source code of the game. As detailed in the README inside the zip file, the source code is released under the MIT license, and the assets (graphics and audio) under a Creative Commons CC-BY license. The game was programmed 100% in C using the wonderful GBDK-2020 toolchain. Please don't hesitate to ask me if you have any questions about the source code or how the game works.

StatusReleased
PlatformsWindows, macOS, Linux, Android
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorDr. Ludos
GenreAction
TagsGame Boy, Game Boy ROM, Homebrew, Open Source, sgb, snes
ContentNo generative AI was used

Download

Download NowName your own price

Click download now to get access to the following files:

DMGvsSGB_jam.gb [ROM file - USE with a Super Game Boy emulator or real hardware] 32 kB
DMG-vs-SGB_source.zip [Source Code - compile with GBDK-2020] 38 kB

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

This is really cool!  Took me a while to figure out how to emulate but I'm glad I did, it's unique and impressive and actually fun to play!

Thanks a lot for your comment, I'm glad you enjoyed it!

I have tried running this on my FXPAKPro. It ran but the SNES sprites flicker like anything. I thought that was supposed to be fixed? I tried updating to the latest firmware (2023) and tried running it again but there was no change.  Have I done something wrong or missed something? It flickers like the description of the original design flaw which was supposed to be fixed. Very perplexing. I'm writing a blog post on this and I'll be forced to report that it doesn't work properly on an FXPAKPro unless you can tell me how to fix it. Thanks

Hi! 

Don't be worried, your FXPakPro is working great: the "SNES Sprites" feature of the SGB does flicker, whether you play it on real hardware or emulator.  I designed the game with a plain white background to try to mitigate this issue, but the SNES sprites will still appears translucent / ghostly due to the constant flickering.

I'm sorry if the game page description wasn't clear on this topic, but this feature is flawed due to the flickering, and that's likely why Nintendo disabled it. The "fix" performed by this game is to be able to enable this feature back (it's normally locked away), but I don't think anything can be done to prevent the flickering.

I tested my SD2SNES (previous name of FXPakPro) and it does emulate the SGB1 and SGB2 perfectly to my eyes: I didn't notice any difference running my through an actual SGB / SGB 2 and the FXPakPro while testing my game.

(+1)

So I have to ask, if enabling the flag for the extra sprites disables the VRAM upload command, what stops you from using the command to write to RAM to disable the flag, upload to VRAM and then just re enable the flag to allow for snes sprites? 

Hi! You have a good idea, but it's actually a bit more complicated than that. The VRAM upload in the sprites area is permanently disabled in the SGB BIOS, like the "SNES Sprites control" function. According to the SGB documentation, you can set a flag for the VRAM upload to send data to the sprites area, but in reality, the code of this function in the SGB BIOS disregard this flag and always send data to the "background area".

It may be possible to patch the SGB Bios to restore the VRAM sprites upload, or to try to manually send graphics data a few bytes at the time using the general "SEND DATA to SNES RAM" function. Thanks to Nenson Dubois research, this function is used in my game to patch the SGB Bios to enable the "SNES Sprites" function, so there is still hope that it may also be possible to restore the sprites VRAM upload too.

But regarding the sprites flickering, I fear that this issue will never be solved, as I think that's what led Nintendo to disable the "SNES sprites" function in the first place. As the SGB Bios read the Sprites OAM data from the content of the GB Screen sent by the SGB (so from a portion of SNES VRAM actually), I don't think the SNES will have the time to do everything and maintain a 60 fps update.

(+1)

Cool trick.

Mesen-S is just Mesen 2.0 now. The emulator has been integrated into a multi-system emulator that supports NES, SNES, SMS, GBA, WonderSwan, WonderSwan Colour, Game Boy, Game Boy Colour, and of course SGB1 and 2, TurboGrafx-16, and ColecoVision.

Hi, thanks for the heads up! I personally used higan during this project (as it's almost 100% accurate and the one I'm used to), but I guess I should try to include Mesen 2.0 too, sounds neat that they support so much systems!

Yeah, it has a rather competent debugger that was always the main appeal of Mesen even over Higan/Ares(regardless of which one's more accurate).

(+1)

Amazing concept! I love pushing the boundaries of these older hardwares.

Hi, thanks for your feedback. I too enjoy trying to push our beloved retro consoles whenever possible :)!

(+1)

What a wonderful (and super nerdy) idea!

Thanks a lot for your comment, I'm glad you enjoyed it! :)