CS 2260: Media Device Architectures

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

Description

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.

Grading

Tests (midterms 1 and 2): 30%

Homeworks (roughly weekly): 20%

Projects: 20%

Final: 30%

Books

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

Programming Environment

Will will use the Visual HAM Gameboy Advance development environment. You can download the installer here. HAM is only available for PC and Linux systems. HAM will be available in the STATES lab if you don't have a PC or Linux system. In class I will demonstrate HAM exclusively on a Windows system.

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:

Topics

Here's an unordered list of some of the topics we'll cover during the semester.

Schedule

This will be updated as we move along

Tuesday, January 10

Overview of class.

Slides: class Overview

Thursday, January 12

DrawPixel, our first Gameboy program.

Introduction to C.

Slides: introduction to C - types, operators, pointers

Tuesday, January 17

Binary representation.

Binary numbers (includes links to hexadecimal and octal)

2's complement representation

Bitwise logical operations

Slides: Binary representation

Thursday, January 19

Binary representation and #includes and #defines in C

IEEE Floating Point

ASCII

Slides: Other datatypes + includes and defines in C


Assignment 1 (available on Webwork) is due Tuesday the 31st at 12:00am

Tuesday, January 31

The GBA bitmap graphics modes

Read Chapter 5 of Programming the Game Boy Advance

Slides: The GBA Bitmap Graphics Modes

Thursday, February 9

GBA Button Input

Read chapter 10 of Programming the Game Boy Advance

Slides: GBA Button Input


Assignment 2 (available on Webwork) is due Friday 17th at 12:00am

Thursday, February 21

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

Tuesday, February 28

Midterm!

Tuesday, March 7

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

Thursday, March 9

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

Thursday, March 16

C Structures

Slides: C Structures

Tuesday, March 28

GBA Tile Modes

Read chapter 6 of Programming the Game Boy Advance

Slides: GBA Tile Modes


Assignment 4 (available on Webwork) is due Tuesday, April 4 at 12:00am

Thursday, March 30

GBA Rotation Backgrounds

Slides: GBA Rotation Backgrounds

Tuesday, April 4

Q & A

Thursday, April 6

Midterm 2

Tuesday, April 11

Memory allocation

Slides: Dynamic Allocation (slides from 2110)

Wikipedia's entry on the call stack

Wikipedia's entry on dynamic memory allocation

Thursday, April 13

Return and go over midterm 2

Tuesday, April 18

Project 2 assigned (Due Sunday, April 30, by midnight)