What tool do you recommend for creating pixel artwork?

Last updated on May 29, 2016

Photoshop works fine if you have it, but I also recommend trying Asperite, a tool made from the ground up for pixel art creation. There are versions available for all platforms, and it can output stills or animations ready to drop onto the Game Frame.

Press the “Program Mode” button on the Teensy. Your board should flash and your Game Frame should reboot. Done!

KICKSTARTER EDITION:

To change the Game Frame firmware, such as between Game or Clock software, you’ll need to program the PCB as though it was an Arduino Uno. First, grab the source code from GitHub. Then you’ll need the Arduino IDE (development environment) version 1.0.1, which you can download for Windows or OS X on the official previous versions page. Additionally, you’ll need a 5 Volt USB to FTDI cable or adapter (I use this one) to perform the actual programming. (When connecting the cable, note the wire color markers on the PCB — green on one end, black on the other.) You’ll also probably need to install FTDI drivers.

Thankfully, the above steps are all a one-time thing, and once you’re up and running swapping firmware is a breeze. Just connect the cable to your Game Frame, load the firmware into the Arduino IDE, and choose Arduino Uno from the Tools -> Board dropdown menu, along with the appropriate Serial Port. Hit the Upload button, and wait for the magic to finish.

Step 11) Click the Play button near the looping options to preview your animation, but don’t worry about frame rate yet.

Step 12) Choose File -> Export -> Render Video. Set the location you want to save at the top (the filename doesn’t matter), and then configure the rest of the window according to this screenshot, making sure to click “Settings…” and select 24 Bit.

Step 13) Click Render.

Step 14) Save this Windows batch file to your render folder and run it. It will rename your files appropriately for Game Frame.

Step 15) Copy your render folder to your Game Frame and enjoy! Optionally include a CONFIG.INI file if you want to adjust the frame rate.

Where can I find the Game Frame source code?

How do I control the sequence of animations?

Last updated on August 7, 2014

There are a few ways to control the sequence of animation folders.

Sequential playback: This is the most basic, but also the most cumbersome. If you set the Game Frame playback mode to sequential, it will play folders based on the order they were written to the microSD card (after a fresh FAT32 format).

Using CONFIG.INI: There is an option in CONFIG.INI called nextfolder. If you set that to the name of another folder on the microSD, it will always play that one next. Note that this setting overrides shuffle playaback mode, and the NEXT button on top of the Game Frame will play assigned animation if pressed.

Numerical Nesting: This is my personal favorite. Instead of filling a folder with BMP images, you fill it with more folders with numerical names, starting with 0 (zero). For example, if you want to create a little Pac-Man drama, you might create the following folders:

Each of the numerical folders looks just like a standard image folder, and can contain its own CONFIG.INI. The benefit of this method is you’ll never wind up in the middle of a chained series of animations in shuffle mode, and the NEXT button on top of the Game Frame will skip the rest of the folder chain if pressed.

How does CONFIG.INI work?

If you look at the animations included with Game Frame, you’ll find a CONFIG.INI file in every folder. You can use this file to control many aspects of your animations, outlined below.

Under the [animation] section, the following controls are available:

hold: This essentially controls the frame rate. You give it a number of milliseconds to hold every frame, so if you enter a value of 1000, it will hold every frame for one second before displaying the next one.

loop: This true/false statement tells the system whether to restart the animation once it reaches the last frame, or progress to the next folder on the microSD card. For instance, if you have a character walk cycle, you’ll want to set this to true, whereas if you have a very long animation with a distinct beginning and end, you might want this set to false.

finish: This true/false statement can instruct the system to finish the animation even if the system duration has elapsed. For example, if you have a long animation, it will play to completion even if the Game Frame is set to cycle animations every 10 seconds.

Under the [translate] section, the following controls are available:

moveX/moveY: This represents the number of pixels your images will be pushed across the screen every frame. You can use positive or negative values, depending on which direction to want to move. Using these controls, you can make simple looping animations (like a short walk cycle) that move across the screen as they would in a game. Note that the system will continue to iterate through your files (e.g. 0.bmp, 1.bmp, 2.bmp, etc.) while moving them across the screen. Also, if your graphics are larger than 16×16, the system will initialize their positions according to your moveX/moveY values so that you can pan across the entire image.

loop: This controls whether the above moveX/moveY scrolling movement should repeat when completed. If set to false, the system will proceed to the next image folder when completed. For instance, if you have a man walk across the screen, you might set this to false so he doesn’t have countless twins following him. However, if you have a taxi cab drive across, perhaps you want this set to true.

panoff: This one is a little weird to explain, but it’s handy. It controls whether the moveX/moveY animation should begin and end its movement off-screen. For example, if you have have a little man who walks right, a panoff value of TRUE will cause him to start off screen to the left, walk on, and keep going off the right side of the screen. Alternatively, if you have a long 256×16 train image that you want to scroll across the screen infinitely, you’d set panoff to FALSE. Just note that when panoff is set to FALSE, the “first” and “last” 16×16 frames of the panning movement should be identical. For example, in the 256×16 train, the left-most 16×16 pixels should match the right-most 16×16 pixels. That way, when the movement reaches the end of the image and loops back to the start, the transition will be seamless.

nextfolder: This will hardcode a folder for the system to play next. This overrides the shuffle mode, and can accidentally be used to make the system cycle between two folders indefinitely, so just be aware of it. There is also another method of creating folder sequences called numerical nesting.

Can you explain the playback modes?

Last updated on August 7, 2014

Sequential: This plays back image folders in the order they were written to the microSD card. To be clear, this is not alpha-numeric sorting based on the filenames. The way to control this order is to copy all of your media to a folder on your computer (including /00system), format the microSD in FAT32, and then copy the media onto the microSD in the order you want them to appear.

Shuffle: This will shuffle the folders. It uses a nice random number generator so that every time you turn the device on it will show a different image.

Pause: This is really a pause-shuffle. It’s the same as the shuffle mode above, but only shows the first frame (i.e. 0.bmp) of any image sequence and pauses any lateral animation in the folder’s config.ini file. This is useful if the Game Frame animations become too distracting in work or more subdued environments and you just want still artwork displayed. Just be careful to note that if the first frame of animation is a blank screen, that’s exactly what you’ll see.

What hardware is included?

Last updated on February 18, 2014

There is a custom PCB, 38 light cables (each with two LEDs on the end), a microSD card, a roll of Gorilla Tape, and some mounting hardware. The cables connect with a simple “phone style” plug, and you only need to connect as many cables as you need.

How long is the power cord?

How is Airfield programmed?

Last updated on February 18, 2014

The light sequences are stored in a simple text file on the SD card. We’ve designed a beautiful web tool to make this process fun. Revisions are a snap, and you can share your lamp sequences with the world.

What if I don’t want to bother programming a sequence, and I just want the lights to blink randomly or stay turned on?

Can you sell me just the board without the LED cables?

Last updated on February 18, 2014

Possibly, but do you really want one? As you probably know, LEDs are extremely sensitive to voltage/current and they must be driven at proper levels or else they will either burn out or lack brightness. Our matrix components are designed for a single LED type throughout the matrix, and we’ve dialed it in for our particular LED specifications. Further, our hardware does not require or support series resistors inline with the LEDs, so attempting to wire our board to commercial pinball LEDs (that all include resistors) is problematic… though 5 Volts to each LED is a possibility. Plus, you’d need to solder your bulbs directly to our PCB or marry them to 6p4c phone cables to use our jacks. If this sounds all good and jolly, contact us and we’ll work something out.

Will Airfield work with game X?

Can I expand the board to support more than 64 control lamps & 8 general illumination lamps?

Last updated on February 18, 2014

Airfield does have experimental support for daisy chaining multiple boards together, all controlled by a single CPU. This would require custom cables, new firmware, and some clever hacking of our sequencing tool output, but if it’s something you’re interested in we would be happy to work with you to make it happen. We’d actually love to see it.

Can I control the brightness?

Last updated on February 18, 2014

You can control dynamic brightness in the sequence itself, or you can set a global “Maximum Brightness” that will cap it a certain level. You can also set a speed multiplier that will slow down the light show. These options are good for creating a more subdued environment, and they are explained in the documentation (see below).

What’s that switch that says DIAG/PLAY?

Last updated on February 18, 2014

We call that the debug switch. If it’s in Diag mode, debug information will be sent over the FTDI pins to a PC running the Arduino IDE. There’s more information in the troubleshooting docs below, but basically if this sounds like Greek to you, just leave it in Play mode. Sequences run a little faster in this mode.