Writing 2D Games in C using SDL by Thomas Lively