Two player Space Invaders via FPGAs

Last semester, [Peter], [Jared], and [Jeremy] took a course on embedded systems. They managed to turn out a very accurate copy of the classic Space Invaders in their class. Not wanting good code to go to waste, they decided to develop two player Space Invaders, and we wouldn’t mind testing it out.

The guys built their Space Invaders clone on a Virtex II dev board. Wanting a little more hardware development, they picked up a pair of RF trancievers so the two boards could communicate with each other. The rules of two-player Space Invaders is fairly simple; if you destroy an alien, there’s a 30% chance it will appear on your opponent’s screen. Hit the space ship that flies along the top of the screen, and 1 to 7 aliens will appear on the opponent’s screen. It’s a bit like two player Tetris where your victories bring about your friend’s downfall.

The guys put a really neat spin on an old game, and we’d love to try it out. Check out the guy on the left losing a game of Space Invaders to his lab partner after the break.

Comments

  1. chango says:

    I love it when class projects encourage creativity in engineering. Next term should have them ditch the PPC and implement the same thing in dataflow.

  2. Mike field says:

    For more FPGA retro gaming action check out http://www.fpgaarcade.com – but of course you will need the official ROMs tousle them.

  3. Michael says:

    Very cool, love the changes… makes for interesting gameplay.

  4. Very cool hack, but major pet peeve when when clones get game mechanics wrong…

    1.) When an invader and a shield collide (physically) that part of the shield should be “eaten”. — The alien advance continues.

    2.) The “bottom of the screen” (where the invaders must land) is literally the same plane on which the player moves. (i.e. when they come in contact with him they destroy him, and he doesn’t respawn, regardless of remaining lives.)

    3.) Invaders speed up their movement as their numbers dwindle.

    #2 would be interesting especially, as if one player has aliens landing and marching towards him, he can buy time by moving to the edge of the screen — if they other player has just 1 life left, they may be shot in the few seconds it takes to loose.

    • 1) We were aware of that, but we made a conscious decision to do it the way we did (for various reasons).

      2) We did implement this. It’s hard to tell in the video, but when the player loses due to the aliens landing, the player loses when they reach the same row as the player. The problem with this particular example is that a blue alien is generated just before the aliens shift down to the final row, so it looks like the player loses when they are one line above. We did not support the ability to hide in the corner waiting for the pending doom.

      3) We did implement this. This was actually a bug in the original game, because fewer invaders meant faster drawing. We liked the effect and programmed it in.

  5. Hirudinea says:

    I don’t know exactly how you would do it but it would have been cool if one player could play the invaders.

  6. daniel says:

    I took an embedded systems class and created an 8-bit calculator. What a ripoff.

  7. Jack Gassett says:

    This is a cool idea! I just released some open source hardware that is meant to make FPGA games like this available on more affordable and modular hardware.
    http://arcade.gadgetfactory.net/

    I’m thinking it might be cool to take the Arcade MegaWing board and modify it so it has two VGA outputs and then implement two versions of the Space Invaders game in the FPGA. I’m guessing you didn’t implement the game on the PPC processor but instead did it as HDL?

    If not then we do have HDL avaible for Space Invaders that is already running on the Papilio Arcade (from FPGAArcade.com).
    https://github.com/GadgetFactory/Papilio-Arcade/tree/master/invaders_rel003_papilio

    I don’t think this game uses much memory at all so it is probably feasible to have two versions of the game run inside the FPGA at once.

    Congrats on a really cool project. This would be fun to keep hacking with. :)
    Jack.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 92,090 other followers