- Projects -

Battle Pong

A 2-player homebrew game for the Nintendo Entertainment System. Multiple balls, super meter, and charging up your paddle add fighting-game-inspired mechanics to classic Pong. The goal is to introduce mind-games and various play styles — pressuring your opponent, playing defensively, or scoring a goal by doing the unexpected. Play in any NES emulator.

B - move quickly
Forward+A - shoot a ball (costs 2 meter)
Backward+A - place a deflector (costs 1 meter)

Download ROM (40KB)
Last updated: February 11th, 2018

Input Display List

Customizable on-screen display for controller inputs. Designed for live-streaming fighting games or analyzing your execution.

View on Github

Keyboard Recorder

Records and plays back key sequences. I made this application to work around lack of quick input recording for practice in arcade fighting games/emulators.

View on Github

Gamepad Key Controller

Gamepad Key Controller allows you to map USB game controller inputs to keyboard and mouse inputs. I designed it with a focus on being very fast to set up. It supports up to 16 buttons and 6 axes of analog input, and can save and load configuration files.

I wrote this program along with reading Programming Windows (Petzold, 98) for practice. Though other controller-to-keyboard mapping programs work better and have many more features, you may find this program interesting if you're learning how to use the win32 api.

View on Github

- Articles -

Programmer's Guide to Gamma Correction

If you're rendering graphics with lighting calculations, you should understand gamma correction. This guide covers what you need to know to get correct lighting when working with sRGB images.

Read on Medium

Compile Times of Single-Translation-Unit-Builds

Making a single-translation-unit-build is a method of speeding up compile times in C and C++ programs. This article explains how to implement this method, provides examples of regular build times and single-translation-unit-build times, and analyzes the differences.

Read on Medium

Math for Transforming 3D Geometry

An introduction to useful math for any type of work with 3D graphics. Topics include vectors, complex numbers, quaternions, and matrices. This is a written form of a presentation I most recently gave for Boise State University's IEEE student chapter.

Read on Medium