Consolite, a Tiny Game Console on an FPGA

If you wish to make a game from scratch, you must first invent the universe. Hardware source | Tron source | Circles source | Emulator source | Assembler source | Compiler source For my latest project, I am diving back into Verilog to create the hardware side of Consolite. For those who don’t know, Consolite is the name I’ve given to my design of a tiny hobbyist game console and associated software toolchain. In my previous posts, I demoed a compiler that translates from a flavor of C to Consolite Assembly, an assembler that translates from Consolite Assembly to binary files, and an emulator that runs the resulting binaries. ...

June 8, 2016 · 6 min

Spaceship.codes - A Game for Programmers

Source code (MIT License) After a few months of development, I’m proud to announce the first release of spaceship.codes! Spaceship.codes is a browser game for programmers, with a built in code editor that the player uses to write JavaScript to control their spaceship. I will illustrate this with a simple example; it might be helpful to open spaceship.codes in a new tab so that you can follow along. First we need to load a level. We can do this by clicking the “Select Level” button, then clicking the first level (named “Thrust”), and finally clicking the “Load” button. After the level is loaded, you should see something like the following: ...

April 2, 2016 · 3 min

Breakout in Assembly

Technical details follow, and while I’ve tried my best to make it interesting and accessible I know that some of you just want to play the game. Here is a link to do just that. Consolite (coming from “console lite”) is the name I’ve given to my recent project of making a tiny hobbyist game console and associated toolchain. My end goal is to write a custom microprocessor and video controller that I can put on my Mimas V2 FPGA board. For prototyping purposes, I have first written an assembler and an emulator so that I can test out how writing games will work while easily making tweaks to the instruction set. ...

August 30, 2015 · 4 min

Tetris in Hardware

Using the Nexys 3 board with Spartan 6 FPGA to output Tetris to a VGA display. Source Code | Full Technical Report I’m a computer science student at UCLA, and one of my most recent classes was a “Digital Design Lab” where we got to play around with programming FPGAs. For our final project we were allowed to choose what we wanted to create, and my partner and I decided to go with a clone of the popular video game Tetris. ...

July 10, 2015 · 3 min

Planetary - Circular Platformer Concept

Skip to playing the game! In my last post, I dipped my toes in the water with the Phaser game engine by making a simple game of Snake. I enjoyed using Phaser and decided to further test its capabilities by making something more complex. I’ve always wanted to make a side-scrolling shooter, but developing the storyline, levels, and graphics to do it right isn’t something I have time for right now. So I thought, what if I cut corners and just made the level a loop, so you can play infinitely? That gave me the idea for a circular platformer, where you run around the surface of a planet and have to defend against waves of enemies. I’m sure it has been done before, but it seemed interesting enough to start working on. You can see the project on Github. ...

July 8, 2015 · 5 min

Snake in JavaScript with the Phaser Game Engine

I’ve been wanting to get back into game programming recently, so I decided to build the classic video game Snake. I chose Snake because it has simple mechanics and I had never programmed it before. As a web developer I know the browser can be a great platform to get up and running quickly, so I decided to make it in JavaScript. I hadn’t built a browser game since before the <canvas> tag became widely supported, but luckily GitHub has a handy list of JavaScript game engines. I chose Phaser because it’s at the top of the list, and after looking through the documentation it looked like it would suit my purposes. You can play the finished product here. ...

June 27, 2015 · 6 min