Matt Greer, an independent developer, recently shared an exciting accomplishment in a blog post and a YouTube video: he managed to fit an entire game of Solitaire onto a single custom Nintendo e-Reader card. This card, packed with just two “dotstrips,” houses 2,192 bytes each, amounting to a bit over 4.3 kilobytes of data.
For those unfamiliar, the Nintendo e-Reader was a Game Boy Advance accessory launched in Japan in December 2001 and in the United States by September 2002. This peripheral enabled users to read whole games or add-ons for existing GBA titles from scannable cards, then save them to the e-Reader’s substantial 8MB internal storage. Some e-Reader games, especially NES ports, could require up to 10 cards, while the device could handle as many as 12, with certain features like extra levels for Super Mario Advance 4 needing just one of these cards.
Greer’s detailed blog post dives deep into the creation process of this Solitaire homebrew game, made within what might be the most demanding technical constraints for Game Boy Advance games. Crafting homebrew games for the GBA is already quite niche, but making a one-card Solitaire game for the e-Reader ventures into extraordinarily niche—and almost whimsical—territory.
According to Greer’s blog, the e-Reader can load NES games, raw binaries, and even Zilog Z80 binaries. The Z80 assembly language, known for its minimal footprint, was particularly suitable for this project. e-Reader applications also benefit from an e-Reader API (ERAPI), which allows frequent tasks to be executed without needing to embed them repeatedly in the dotstrip code, saving valuable space.
Greer’s post points out that the Z80 emulator within the Nintendo e-Reader isn’t entirely precise, working with a limited set of opcodes and registers. This limitation means some functions available on a full Z80 aren’t feasible in this constrained e-Reader environment. Despite this, Greer successfully designed a fully playable game of Solitaire, even including changeable music, all within the confines of 4,384 bytes. Spanning across two dotstrips on one custom card, Greer’s work is a testament to homebrew developers’ ingenuity. It’s unfortunate that e-Reader cards had such a brief production life, leading to the Nintendo e-Reader fading into obscurity over the years.