AI Arduboy - A dorky game of skill where you train an AI

A dorky and fun game for Arduboy handhelds that will make you question the future of AI.

(Seems to run ~3x fast in this emulator?)
ai_arduboy_v1.1.hex (78.3 KB)

The idea is that you have to teach an AI what ‘modules’ are constructive or destructive. There are over half-a-million possible modules. You have to hurry though, if it loads a module before you train it, you loose points. If you guess improperly, the AI will start to show signs of corruption! ooooOO!

It’s basically a linguistical Bop-It with points and strikes. Inspired in part by ZackFreedman’s Singularitron/SingularitronFirmware/flavortext.h. Well over a thousand additional vocabulary words were added from inspiration gained from various websites I visit and Discord servers I frequent. Thanks to those that chimed in! Additional phrases and programming insight by OpenAI’s ChatGPT.
Includes small fonts by filmote.

Main Menu controls:
Up/Down - Cycle subtext (intro, help, tips)
Left/Right - Change difficulty and text size
B - Toggle sound on/off
A - Start Game

In-Game controls:
Up - Mark AI module as “Constructive” or “Good”
Down - Mark AI module as "Destructive or “Bad”
B - Toggle sound on/off

Very short demo video with sound

Here is a Google Sheet/Excel document that you can use to make your own verb/noun lists:


The author of this game takes no accountability for the contained AI’s actions, phrases, comments, ideas, morals, comments, efforts toward AI singularity, buffer overflows, burns, diss tracks, bad jokes, or bodily harm. IF the AI makes any attempts to force or manipulate the user, please shut off your Arduboy handheld at once and mail it to me for safe keeping. Avoid using this game in emulators where AI can escape into the World Wide Web (it runs fast).

Update: Updated game to v1.1 - Jan 3, 2023


Yes I love the sounds this is incredible!


Yes I love the sounds this is incredible!

Thanks! The typing sounds are delightfully 80s in my opinion. Mostly inspired by the W.O.P.R.'s text stream in the opening of the War Games (1983). Also of note is the subtle hard drive clatter and UI bleeps from computers of the 90s. It is a very primitive “AI” after all.

What’s so bad about “recalling the 70s”?!

Great game! That music icon seems very familiar though… :thinking:
Jokes aside, awesome game, I think it’s very fitting (especially with the popularity of ChatGPT and AI in general nowadays).

Also I love how it just said “Encountering Canada” as I was typing this :joy:.

Many thanks!

Maybe it thinks “calling the 70s” would be better. Or maybe something happened in the 70s that the AI wants to forget (points to legal blurb in original post, lol).

Indeed, it is simply character 14 (0x0E) from the built-in “OEM 437” font5x7 character set.

1 Like

Yeah, I was fooling around in the Set System EEPROM app a little while later when I was setting the unit name and it was under 14 (or something related to 14).

I was talking about something different though, it reminds me of a stubby red fellow (I don’t want to bring any Among Us garbage here but it does look pretty similar to the “Amogus” or whatever)

Didn’t know you could print them like that (or at all), I need to go try that now :wink:


However, one of them will be newline instead because Arduboy2 treats '\n' as newline, despite that not technically being part of code page 437. I think there’s a way to change that behaviour, but it’s not really that important.

Yeah, textRawMode()? I purposefully kept that off to add to the “corruption” in the game. It looks really weird/fun when line breaks come out of nowhere and start overlapping other text. Obligatory ‘its a feature not a bug’ in the game.

1 Like

Yes, there is setTextRawMode():

In text raw mode, character values that would normally be treated specially will instead be displayed. The special characters are:

  • ASCII newline/line feed (\n, 0x0A, inverse white circle).
  • ASCII carriage return (\r, 0x0D, musical eighth note).

All other characters can be displayed regardless of whether raw mode is enabled or not.

(There’s also the corresponding getTextRawMode())