4-e 3.0: support for multiple GBFS "stacks", reworked user interface

February 28, 2026 at 1:51 AM (UTC)

I have been working some more on 4-e, my Game Boy Advance homebrew program that takes the place of an e-Reader (and printing cards for an e-Reader) for Super Mario Advance 4.

4-e last saw three rapid releases in the middle of 2024, and since then it hasn't really been touched. But, in the near future, I'm planning on doing a lunch at work and talking about building it, so it's been back in my mind—and I had some thoughts.

Probably the most amusing change is just that there are much more pleasant colors on the screen now. 4-e uses tonc, and at the time, I just let it display its default yellow text. I'm pleased to say the yellow text is gone—I had a color theme made up for me off the back of a retail card, cut off some bits to make the colors fit into the 15-bit space of the Game Boy Advance, and made the thing a lot more pleasant to look at.

Also making the UI cut are several new abilities to surface interesting information about the cards. For example: 4-e can now determine whether the cards are supposed to be levels, power-ups, or demos and display that on the card picker. It'll also surface the set number and type after selection, showing off that your "Wild Ride in the Sky" level is card 07-A026.

Oh, and—this isn't my doing, but Smaghetti can now export .bin files for levels from its Experiments window. I loaded the top five levels into a single 4-e ROM; that's what you see in the photo below. I love it.

Two Analogue Pockets, one running 4-e, and one running Super Mario Advance 4—ready to connect.

Finally and perhaps most usefully, I also gave a lot of thought to the fact that I have a lot of these cards, and organizing them in a way that gave me quick access to them was painful. GBFS and gbfs-web both lexically sort the cards. I wanted some sorting, yeah, but also to be able to have something like a set of "stacks" of cards that I could choose quickly.

After thinking it through a bit, I remembered that you can actually stick many GBFS files on the end of a ROM. Some care is needed to get the padding right, but it's not too bad. In my case, I have six directories, A through F, each full of a logical set of cards (like levels, or classic levels, or power-ups…)

for d in A B C D E F; do
    gbfs $d.gbfs $d/*
    padbin 256 $d.gbfs
done
cat build/4-e.gba ?.gbfs >"4-e - My Collection.gba"

The 4-e picker will now scroll off the right of each "stack" (GBFS file) onto the next, and loop around to the beginning or end. Hitting L or R jumps from stack to stack quickly.

At some point, I'll probably update gbfs-web to make the build process easier. But until then, it works great with the command-line tools.

Try it out! Let me know what you think.