What if the best game of 2024 came out on an old, obscure and weird platform?
I friggin' love Balatro. I've put an embarrassing number of hours into it. I also like to make games for the Nintendo E-Reader. The E-Reader was a peripheral for the Game Boy Advance that let you load mini games and "DLC" by scanning cards into it.

A while back, I made this mock up screenshot of what Balatro might look like on the E-Reader.

This mock up was really fun to make. So I decided to take it one step further and make a working prototype of the game. This was also a blast to make!
This prototype is almost entirely real. It's a real E-Reader game, and it really plays Balatro. I only implemented just what you see in the video, so it's a very long way away from being a full port of the game.
I said it's almost entirely real because it does fake a few things. The blind selection screen is entirely a mock. You just press A and go into the round.

And when you win the round, the win screen is mocked too. You have to win with two remaining hands for it to be believable :)

But playing the game within the round is 99% real. I hard coded Fibonacci and Splash jokers, and when it calculates what type of hand was played, it only knows about "duplicative" style hands (ie two pair, full house, three of a kind, etc). My wife was sad to find her straight only got scored as a high card. Doh. Many other things are missing too, but this was mostly due to not wanting to spend too much time on this project more than anything.
Could it be done?
Would it be possible to make Balatro for the E-Reader? I think so.
It would be a challenging project and a good number of concessions would need to be made. But I do think a demaked version that still captures the essence and fun of the game is doable.
Dealing with high scores
An immediate challenge would be the massive scores you can get in Balatro. E-Reader games can comfortably work with 32 bit numbers. So the highest possible score would be 4,294,967,295. Real Balatro uses 64 bit numbers so scores can absolutely go into the stratosphere there. But I think 4 billion is still plenty to have fun and get that Balatro experience.
But ... the Game Boy Advance's screen is only 240x160 pixels, so fitting such large numbers onto the screen would be a challenge. This is an area the demake would have to be different from the real thing. Something like this would be needed (just a quick mock up).

So many numbers
Balatro puts a lot of numbers on the screen.
- Number of remaining hands
- Number of remaining discards
- Current ante
- Current round
- How many cards remain in the deck
- How large the deck is
- The level of the hand that is being played
- The current chip total
- The current mult total
- Your money
- Your score so far in the round
- Your score for the current hand
- The goal score to beat the round
Did I miss any? The E-Reader has a collection of DrawNumber
functions, but the problem is it is limited to four unique numbers. If you try to draw a fifth number with DrawNumber
, nothing happens.
Even worse, each number can have a max of 5 digits. So just to keep track of your score, would take up 2 of those number slots.
A lot of this can be worked around with sprites and some clever redesigning and careful pruning back of features (this would be a demake after all). I do think this challenge could be overcome, but it would probably be the hardest part of this project.
150 jokers?
Balatro has 150 jokers, and they all do very different things. I think making a full fledged "joker engine" that can handle this is doable. The E-Reader/GBA has plenty of memory for this, and it's easy to dynamically call functions. So logic-wise, I don't think this would be a problem. But each joker needs a card graphic.

That would really add up and take up a ton of space. Space is always a concern with E-Reader games. Make no doubt, Balatro on the E-Reader would be a very large game by E-Reader standards. But I'm certain fitting all 150 jokers would not be possible. A careful sub-selection of jokers would need to be picked.
Text
Balatro has a ton of text in it. Similar to games like Magic the Gathering, the rules of the game are literally written out on the cards. Balatro uses little text pop outs for this, but it's still the same idea.

There would be no way to include all this text into an E-Reader demake. So unfortunately the demake would only be playable by people who are familiar with the main game. I dunno, that doesn't really bother me. This is the type of project that's just done for the sake of it.
Running out of sprites
In Balatro it's possible to have many jokers, and a large hand. Here is a very extreme example, but it gets the idea across.

The E-Reader only supports 56 sprites. I think for space saving, a card would have to be made out of two (and sometimes three) sprites each.
Working within this limitation would be very challenging. Fortunately it is possible to use backgrounds here instead of sprites. In my prototype, your hand at the bottom of the screen is a background (similarly, in my E-Reader solitaire game, all of the cards are drawn into a background instead of using sprites). That can help a lot. But even with backgrounds, this would be challenging. The demake might have to impose a limit on how big your hand can be and/or how many jokers you can have.
Space considerations
Space is always a challenge with this device. The prototype ended up being four data strips, in other words two cards.

But I also wasn't worried about space here, I just built the prototype without worrying how large it ended up being. If you work at it, you can get your E-Reader games a lot smaller with clever coding techniques. So although I'm pretty sure Balatro would be a large game (maybe 8 cards? 10? The max of 12?), running out of space such that this idea ends up not possible doesn't worry me.
Small numbers
Uh oh, this is a bad one. The GBA can not natively handle decimal numbers, like .25
or 1.1
. There are a few ways to work around this, but none of them are great.
Work around idea 1: Use fixed point numbers
A work around for this problem has been used on old computers since forever. It's called fixed point, and it's a way to do decimal numbers like 1.5
on systems that don't support them natively. I won't get into the details here as it's fairly technical (I wrote two blog posts on it here and here if you are curious). This approach has the advantage of being simple, but has the major disadvantage of reducing the largest number we can work with. That 4 billion above would likely be reduced to 1 billion or even half a billion. Ugh. And on the flip side, this approach has accuracy problems, it could do say 1.5
pretty easily, but 1.1
would probably have to be rounded to 1.25
or 1
.
Work around idea 2: software floating point
Floating point is the name of the number system that modern systems (and Balatro) use to do decimal numbers. It's much better than fixed point. On modern computers, it is always implemented in hardware, because it's very complicated. Technically it would probably be possible to implement a software version of floating point in the E-Reader, but my word it'd be one hell of a project and slow as molasses. This one just doesn't seem realistic to me.
Work around 3: just use integers
Integers are whole numbers, like 1
, 40
and so on. All computers support this type of number. This is by far the easiest and fastest approach. But it would likely mean ditching jokers like Hologram, Vampire and Lucky Cat. Some of the coolest jokers in the game :(

Oh, and then there is the problem of drawing decimal numbers to the screen. The E-Reader's DrawNumber
functions work with whole numbers only ...
Make no doubt about it, decimal numbers are a big hurdle in making a Balatro demake. If I were to actually make this game, I'd probably choose the fixed point approach for this problem.
Just make a real GBA game?
Why do this on the E-Reader if it is so limited? No other reason than I really like the device and have a soft spot for it. If the demake was instead made as a full fledged GBA game on a cartridge, it'd have a bit more breathing room to work through these issues. Many limitations would remain though, like the 240x160 screen and decimal numbers. The GBA can work with 128 sprites, which is better than the 56 of the E-Reader, but still pretty limiting. My hunch is doing this as a proper GBA game would only make it a little bit easier.
Anyway ... will I release the prototype?
No, I won't. At least, not without LocalThunk's approval. This was just for fun, and I made it entirely on my own. Balatro is an excellent game, so I don't want to cause it any harm (or at least surprise) by releasing a demake of it, even if it's just a tiny little prototype. You really aren't missing anything, everything that is possible in the prototype is shown in the video. Oh, the prototype can also sort the cards by rank or suit. Yup, that's the entirety of it.
Conclusion
Thanks for reading! I have more posts about the E-Reader and Balatro if you want more.
And if you read this far, checkout https://retrodotcards.com, my E-Reader site. I will be selling a pack of new games starting July 27th!