Starduino - Star Fox inspired 3D rail shooter for Arduboy

(Stephane Hockenhull) #1


Hello Arduboys and girls,

I got myself an Arduboy last May and here’s the result after 7 months on and off, ramping up on AVR assembly, compiler particularities, and multiple refactoring sessions.

Finally ready for release

I hope you enjoy.


Click here for the .arduboy file

Direct link to the .hex file

The zip that includes the instruction manual (PDF)

Gameplay video:

Hi-res version of the box art:

Release blog post

With a bit of crafting the instruction manual can be printed on a single sheet double-sided and folded+stapled as a booklet (I had quite a bit of fun making the cover spoof and booklet).


Play in the ProjectABE emulator (Doesn’t work today (2019-01-03), but maybe one day it will)

Edit: Whoohoo! new user restrictions lifted. Added the direct links back
Edit: Added direct link to the .hex file … Looks like ProjectABE needs an OLED & sound emulation fix

(Kea Oliver) #2

Wow, this is incredible. I have no other words for it.

(Kevin) #3

This, is… unbelievable. I dreamed it could be true but you made it real. This really is incredible, nice work!!!

1 Like
(Shawn) #4

Wow, just wow this is impressive. I cant wait till I get home to flash this and play.

(Kea Oliver) #5

I would love to see some information on how you did this, I would read that!

(Stephane Hockenhull) #6

I want to get around to it at some point. Trying to decide what format and approach I’ll use for it. Good write-ups are even more work than the code itself :stuck_out_tongue:

1 Like
(Kevin) #7

Someone should send this in to hackaday :smiley: or, maybe better to do that once you’ve done the write up.

(Stephane Hockenhull) #8

But one thing that was essential is making sure the game ran on PC natively.

I have a native 64bit x86 Linux build of the game so I can debug everything in a proper IDE. Except for a few bits of AVR assembly code for math, audio generator, and the poly fill routine, it’s all C++.

The PC build also runs at 60fps the whole time which made it easier to see what was happening when things glitched between two rendered frames.

It also made it a lot quicker to do the compile-test-debug-edit cycle.

There’s so many things to talk about I first have to lay out some structure/order for the topics so it wont be a giant mess of an explanation.

(Stephane Hockenhull) #9

maybe better to do that once you’ve done the write up.

Yeah, definitely not before there’s a write up as there isn’t any hardware hacks involved to interest hack-a-day without a write-up.

Hardware-wise it’s a very boring project. I even removed the LED code & related variables for space.

I’ll certainly send them the link to HaD when I start doing the writeups and/or vlogs.

(Matt) #10

Wow, excellent work! Very impressive @rv6502!

(Scott) #11

Looks good. I won’t load anything on my Arduboy that I can’t examine the source for, though.

(jon yakowec) #12

I just tried this out, awesome game. You did great work here.

(Daniel Champagne) #13

You really are a top developer!:+1:A project well done!:clap:

(fred ) #14

Why? Eprom burn out, brick your arduboy?

(Kevin) #15

Sentient AI botnet bitcoin miner skynet 2.0 bigbrother.web/sign-up/

(Stephane Hockenhull) #16

I guess you could feed 5V to the button pins and then pressing a button will short the pin to ground, possibly frying that pin’s output. EPROM wear is also a reasonable concern.

1 Like
(Scott) #17

Those and other possibilities. Even just writing to reserved system EEPROM or over the high scores of other games.

(Simon) #18

Am I right in saying you have also built an Arduboy VM to develop against? The game looks impressive but the idea of a VM is fantastic!

(Stephane Hockenhull) #19

nah, not a VM, just a PC port. The whole game is in C++, but the ATmega32U4 port has some C++ functions replaced with assembly code rewrites where it mattered (32bit math stuff kills the 8bit AVR) but mirrors the original C++ function.

SendToDisplay, ReadInput, EEPROM read/write and audio sample output (to GPIO or to a sound buffer) are the only parts of the game that differ in functionality.

It’s a native Linux x86 64bit port. …

Just occurred to me how easily I could throw out the 128x64 render function and send the draw poly calls to OpenGL and it’d be enjoyable on PC. I wasn’t gonna release a PC port because 128x64 really hurts zoomed in on a PC/TV screen but…

I cant promise anything, work gets really busy before spring break / Easter. Priority goes to paying the bills :slight_smile:

(Simon) #20

if you scaled the graphics up by a factor of 4 (?) it would be easier on the eyes.