gavd.co.uk

Frail and faltering follower of Jesus

Mitty the Kitty (Arduboy)

By Gavin Davies

The Sky Mice themselves designed the concept and sprite work for this Arduboy platform game! My kids (5 and 4) designed a little video game for the Arduboy open source 8 bit platform with 1 bit graphics. The children did the sprite work (graph paper!) and game design, I just implemented what they described! It’s playable in-browser :-)

Screenshot

The place to go for this game is https://github.com/gavD/mitty_the_kitty/ - the below is just copypasta from there, and possibly dated!


This is a simple platform game for the Arduboy platform. Can you guide Mitty the Kitty past obstacles and enemies to beat all 8 levels? A “duff” is “Bean”‘s parlance for hitting something! Mitty is one of my kids’ cat teddies.

Playing on an emulator

Play Mitty the Kitty on the ProjectABE emulator

Controls:

  • Arrow keys: move
  • A: jump
  • B: duff

How do I play this on a real Arduboy?

First, buy or build an Arduboy. There’s some kits, but I found the real deal to be more reliable (USBs shear off Arduino Leonardos SO easily, so the one I built was bunk!).

You can get releases of Mitty the Kitty from Github. You need the .hex file.

Then, here are some docs to get you started transferring Mitty the Kitty to your Arduboy:

Plaforms

Developed on Mac and Windows in Arduino IDE using an Arduboy FX (I bought one from CoolComponents after the one I built myself failed with a sheared USB socket on the Leonardo board).

Target platform: Arduboy. Arduboy is an Arduino-based gaming platform; it’s super low powered but it has a fast(ish!) CPU:

  • Processor: ATmega32u4 (same as Arduino Leonardo & Micro)
  • Memory: 32KB Flash, 2.5KB RAM, 1KB EEPROM
  • Inputs: 6 Momentary Tactile Buttons
  • Outputs: 128×64 1Bit OLED, 4 Ch. Piezo Speaker & Blinky LED
  • Battery: 180 mAh Thin-Film Lithium Polymer
  • Connectivity: Micro-USB 2.0 w/ built in HID profile
  • Programming: Arduino IDE, Arduboy Game Loader, GCC & AVRDude

Basically, it’s 80s 8-bit with a faster CPU, 1 bit graphics, and a much smoother dev experience!

Why did you commit binaries, do you no git gud?

Well, I MOSTLY git gud, read my book on Git if you like.

The binaries are committed to make it easier to play it on an emulator - it’s simple hosting without faffing around. This is a hobby; I’m on a tight timescale as a parent of small kids!

Although if there’s a nigh-zero effort better way to publish a binary that I can easily update, lemme know!

Mapping of positions to pixels

Some objects in the game have x,y positions that are uint16_t rather than integer positions that correspond to pixels. This is because the game runs at 60fps and you can’t render sprites at a subpixel location (AFAIK! This is my first non-trivial Arduboy game! There’s likely a better way). So, we store x,y at higher resolution then use a multiplier to map between positions and pixel locations. This allows objects to move at different rates (e.g. Mitty is faster than the squirrel, and the bird is faster than Mitty)

License

Public domain

3d printed Sprite

A 3d printed Mitty sprite is available!

Original artwork

The kids' original designs

Mitty