Lightweight Game Console Packs a Punch

Any maker worth their bits will look for new ways to challenge themselves. [Robert Fotino], a computer science student at the University of California, is doing just that: designing and building his own lightweight hobbyist game console that he has appropriately named Consolite.

[Fotino] wrote his own compiler in C++ that converts from C-like languages to a custom-designed assembler that he has dubbed Consolite Assembly. To test his code, he also wrote an emulator before loading it onto the Mimas V2 FPGA board. Presently, Consolite  uses 64KiB of main memory and 48 KiB of video memory; a future version will have 32 bit support to make better use of the Mimas’ 64 MiB of on board ram, but the current 16-bit version is a functional proof of concept.

consolite-status-leds-and-hardware-switches_thumbnailAn SD card functions as persistent storage for up to 256 programs, which can be accessed using the hardware switches on the Mimas, with plans to add user access in the form of saving game progress, storage outside of main memory, etc. — also in a future update that will include audio support.

As it stands, [Fotino] has written his own versions of Breakout, Tetris, and Tron to show off his project.

Not wanting for diligence, [Fotino] has provided thorough documentation of nearly every step along the way in his blog posts and on GitHub if you are looking for guidelines for any similar projects you might have on the back burner — like an even tinier game console.

[via r/FPGA]

9 thoughts on “Lightweight Game Console Packs a Punch

  1. Now that’s what I like – a small computer with video, storage, and I/O, that you know every internal detail about. Now if there were just open-source synthesis tools for Spartan 6 FPGAs.

  2. Public Service Announcement: STOP CALLING THAT GAME “TRON”!!!!!!

    Arcade games with that exact mechanic existed several years before either the Tron arcade game and the Tron movie came out, for example, “Checkmate”. Furthermore, that mechanic was one of SEVERAL mini-games in the Tron arcade game – it wasn’t just purely that one mini-game!

    So please, for the love of all that is holy, stop calling that thing “Tron”.

    1. I’d either call it “light cycles” or “snake”. A version of it was one of the launch games (Surround) on the Atari 2600 in 1977 (or 76?). So it predates Tron by a fair while.

  3. One of the things that has kept me from jumping into FPGAs is that I have no idea how much you can do with a given FPGA with N flip-flops and M “logic cells” or “CLBs” or “LUTs” or whatever each vendor calls them. Now that I have some idea what you can do with 9000 logic cells and 11,000 flip-flops, I’ve got a point of reference. It’s also nice to know that with the particular CPU implemented here, it takes 25 clock cycles to execute an instruction. Thanks for this article, and thanks to [Robert Fotino] for the excellent example.

    1. The amount of LUT/FF needed is also dependent on the quality of the synthesiser, the way the code is written, the skill of the developer, …

      What I often do is search some state of the art in academic journals for a certain algorithm, multiply that by 1.5 (they spent a lot of time optimizing it, since that is the point of the paper, you likely won’t have that much time) to get an idea.

      1. Isn’t Verilog / VHDL code, in practice, quite close to how the hardware ends up? I dunno, I haven’t written any, just a little familiar with it. It’s not like people are writing FPGA code in C++ yet. Or, gods help us, Javascript. Or Visual Basic, gah!

        1. VHDL/Verilog can describe things that way, or can be higher level. As for how it ends up, that depends on the build system. For FPGA it all ends up being turned into the required look-up tables or flip-flops. For silicon, it gets turned into the best physical devices for the design. The actual silicon layers get paid out by other software.

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