Starduino - Star Fox inspired 3D rail shooter for Arduboy

game.hex

UPDATE: New Starduino Turbo version posted at Starduino Turbo - Star Fox inspired 3D rail shooter, better faster stronger , updated URLs in this post to point to the Classic version rebuilt with the bootloader fix (Hold UP and power on the Arduboy to launch the bootloader & flash a new game)


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.

image

Click here for the .arduboy file

Direct link to the .hex file

The zip that includes the instruction manual (PDF)

Gameplay video: www.youtube.com/watch?v=ES3fGLuse4s

Hi-res version of the box art: https://rv6502.ca/wp-content/uploads/2019/01/cover.svg_.png

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).

image

31 Likes

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

2 Likes

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

1 Like

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

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

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

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

2 Likes

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.

2 Likes

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.

Wow, excellent work! Very impressive @rv6502!

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

2 Likes

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

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

Why? Eprom burn out, brick your arduboy?

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

2 Likes

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

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

2 Likes

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!

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:

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