Great!
bbbbbr
Creator of
Recent community posts
Thanks! It’s been a lot of fun learning the console!
Here’s a rather verbose answer. :)
The console is kind of a similar class to the Mega Drive and SNES. It has multiple background tilemap layers (and some bitmap layers), lots of colors, lots of sprites, dma for fast memory copy, a capable CPU, 16 bit bus and lots of memory. So kind of luxurious compared to the Game Boy/Color, and solid performance.
The tricky points are: Graphics memory access, Music and Emulators.
The main thing that was tricky and kind of annoying is the CPU takes priority over VDP for VRAM access. This is the opposite of the Game Boy, where the PPU (the GB’s VDP equivalent) has priority.
What this means is that if you try to write to graphics/VDP memory while the VDP is rendering, you’ll get “VRAM Snow”, speckly glitches all over the screen.
What’s worse is this seems to also apply to the VDP scanline counter that would normally be used to tell when it’s safe to write to graphics memory (without snow). So it required a workaround using a VBlank + timer based system that simulates a register indicating when it’s safe.
(Note, the above does not apply to the bitmap layers, which have dual ported VRAM, but I mostly use the tile based layers and sprites)
For sound, it’s (literally) more like a (casio) synthesizer, instead of having the usual chiptune type sound hardware. There is a built-in system for add-on sound hardware in cartridges, but the Flash Cart doesn’t support that. I haven’t done the sound yet so don’t know all the ins and outs.
And lastly, Emulation. Since it’s an obscure system the emulator support was limited and not very good when I started. Trying to use some interrupts or other features would crash or fail on some emulators, and there timing and speed problems. But I got lucky since the MiSTer core was being written about the same time and it’s been very accurate. And two software emulators improved a lot as well. There aren’t nice integrated emulator debugging tools such as in Emulicious and Mesen. I also wrote a few small test ROMs to help improve accuracy.
During the process I wrote a sparse GBDK-like compatibility layer which made porting Petris easier, though the layer took a lot of work and learning technical aspects of the system. It insulates the developer from the graphics access issues mentioned above. The code for that is open source which might make porting other GBDK based games easier (though would still require graphics changes and customization).
There seems to be a bug where if A is held down before entering the menu then it is still possible to interact with the board.
And then further it is possible to exit the menu with the palette remaining dimmed and play the game that way.
I can’t always reproduce it exactly, but the sequence in the video is roughly:
In the video A -> Start -> Left/Right -> Left -> Down -> Right -> A Released -> Left -> Right A Pressed + Released

Hmm, is it possible to defeat the end boss?
I made it there with close to maxed out stats (healing/level maxed, shield maxed, sword one off maxed) and could only attack once before having to heal each turn until I ran out.
Tampering with the game memory it seems to require up to 30 attacks to beat it, which seems past what would be possible HP wise even if I stepped the sword up one more level.
Ran into a freeze with the game today. Can’t say for certain that it wasn’t the console(1) but the game may have deadlocked when one of the enemies got into the doorway and the other blocked it from moving out.
- Gamebub, running from a mbc5 cart. It’s still rough around the edges as a device, so can’t be ruled out.

Played some more and two quality of life features come to mind that would be nice to have:
- An expert mode that allows the player to move 2x faster, and also removes the vsync()/wait_vbl_done()s between each monster step so that of monsters (esp multiple ones in a room) don’t slow down room traversal a lot.
- An option to somehow skip past the first N levels if you’ve completed them, since when you get higher in level re-traversing them gets a little grindy. It could cost a small amount to add a little friction to it.
Den of Snakes relies on the synchronization behavior provided by the DMG-07 4 Player adapter device. The device collects the synchronous link input from up to 4 Game Boys and then packages and re-broadcasts that data to all connected consoles simultaneously.
So if you want it to work online then your device or service would have to emulate the specific behavior of the DMG-07. The documentation about the device is available here: https://gbdev.io/pandocs/Four_Player_Adapter.html
Den of Snakes does not work with two Game Boys and a single link cable. (it is open source and you are welcome to modify it to work differently if you’d like.)
However, if you want to find some other Game Boy homebrew that uses the link cable there are several in the GBDK gallery (link filter turned on): https://gbdk-2020.github.io/gbdk-2020-gallery/?linkOrMultiPlayer=true
For example my game Petris does work two Game Boys and a link cable. Perhaps it already works with what you are working on. (It is also open source and can be modified) https://bbbbbr.itch.io/petris
Cool that you made it open source!
I did the easy port to MegaDuck :)
https://github.com/bbbbbr/Onitama-pocket-megaduck

I posted it here: https://bbbbbr.itch.io/megaduck-celeste-classic
Let me know if you’d like anything changed/added/removed.
Really nice port! Plays well, feels very crisp. And cool to see it fit in 32k.
Since you made the source available and indicated it was usable for ports, I’ve made the (fairly minor) changes needed to build and run it on the Mega Duck clone consoles (handheld and laptop).
Would you be interested in the source changes and hosting the Mega Duck build on your page here?
If not, and you don’t mind it being hosted elsewhere (on itch), is there a license that the source code is under and how would you prefer attribution?

I understand you all have reasons why you’ve chosen not to sell a ROM at this time.
But if you decide to make it available in the future I will gladly pay for it. Hope it will be considered after the game has been out there for a while.
I’ve bought your other digital releases and like to play on a mix of original hardware and emulators, but do not collect carts.

























