Instructor: Michael Mateas
Email: michaelm at cc.gatech.edu
Office: TSRB 246
Office hours: TBA
Lecture: TTh 9:35-10:55 in Architecture 309
TAs
Mark Duckworth
Email: gtg696h at mail.gatech.edu
Office Hours: TTh 12:00 - 1:30, CCB Commons
Justin Jang
Email: jang@cc.gatech.edu
Office hours: MW 4:30 - 5:30, T 1:00 - 2:00, CCB Commons
The goal of this course is to understand how computers work from logic gates up through running programs, while emphasizing how this material matters in the context of computational media. Students will also learn how to program in the C programming language, a language particularly suited to systems programming. These concepts will be taught by learning how to program the Nintendo Gameboy Advance.
Tests (midterms 1 and 2): 30%
Homeworks (roughly weekly): 20%
Projects: 20%
Final: 30%
Programming the Nintendo Gameboy Advance: The Unofficial Guide
Jonathan Harbour
Free online book available here
Introducing to Systems and Networking
Free online book available here
Essential C
A short (45 page) summary of the C language
Pointers and Memory
Describes pointers and memory management in C
GBA Memory Map
Memory Map for the GBA - includes description of hardware registers
TONC GBA Guide
A nice guide to GBA programming. Contains more technical details than the Harbour book
Additional web resources linked from the course page
The project site for HAM is currently down. A local copy of the installer can be downloaded here.
HAM includes a visual development environment for writing Gameboy programs in both C and assembly, libraries and include files to simplify Gameboy programming (we won't be using these at first), and Visualboy Advance, an emulator for running Gameboy programs.
Some notes about installing the environment on Windows systems:
Here's an unordered list of some of the topics we'll cover during the semester.
This will be updated as we move along
Overview of class.
DrawPixel, our first Gameboy program.
Introduction to C.
Slides: introduction to C - types, operators, pointers
Binary representation.
Binary numbers (includes links to hexadecimal and octal)
Binary representation and #includes and #defines in C
Slides: Other datatypes + includes and defines in C
Assignment 1 (available on Webwork) is due Tuesday the 31st at 12:00am
The GBA bitmap graphics modes
Read Chapter 5 of Programming the Game Boy Advance
Slides: The GBA Bitmap Graphics Modes
GBA Button Input
Read chapter 10 of Programming the Game Boy Advance
Assignment 2 (available on Webwork) is due Friday 17th at 12:00am
Interrupts and Timer
Read chapter 8 of Programming the Game Boy Advance
Slides: GBA Interrups and Timers
Assignment 3 (available on Webwork) is due Sunday, February 26 at 12:00am
Midterm!
Timing Code, Organizing C Code, Project 1
Slides: Timing Code, Organizing C Code, Project 1
Project 1 (available on Webwork) is Due Friday, March 17th, at 12:00am
Direct Sound on the GBA
Read Chapter 9 of Programming the Game Boy Advance
Slides: Direct Sound on the GBA
Additional material on programming sound on the GBA
C Structures
GBA Tile Modes
Read chapter 6 of Programming the Game Boy Advance
Assignment 4 (available on Webwork) is due Tuesday, April 4 at 12:00am
GBA Rotation Backgrounds
Slides: GBA Rotation Backgrounds
Q & A
Midterm 2
Memory allocation
Slides: Dynamic Allocation (slides from 2110)
Wikipedia's entry on the call stack
Wikipedia's entry on dynamic memory allocation
Return and go over midterm 2
Project 2 assigned (Due Sunday, April 30, by midnight)