Game Development for the 8-bit NES
Assignments

Assignment 1

Assignment 2

Assignment 3

Back to main page


Assignment 1 - "Weed Out The Lazy Folks"
Due Tuesday, January 20, at 11:59pm

This assignment is very simple and easy to complete. It will probably take you somewhere between 5 and 30 minutes. You should do this on your own. If the instructions are not clear enough, however, and you do need help with the assignment, feel free to contact Bob for help. Note that for this assignment, it is not necessary that you have any understanding of why it works; you must simply do it. These are the goals of the assignment:

  • Find out who are not likely to pull their weight later in the semester.
  • Encourage those people not to waste our time.
  • Get everyone else initially comfortable with the act of compiling a ROM.
  • Discover major problems before they become more major.

Your final result for this project will be a Nintendo ROM, which you can run in an emulator, that will display your name on the screen. These are the basic steps of the assignment, but you can scroll down more for detailed instructions:

  • Find a Windows, Linux, or Mac OSX computer, and download the appropriate set of assignment 1 files.
  • Open name.bas in a text editor, and replace the text "YOUR NAME HERE" with your preferred name, such as "BOB ROST".
  • Compile and assemble to a rom named after your userid, such as rrost.nes.
  • (optional) Test your new rom in an emulator.
  • By Tuesday night, email me your personal information (see below) and a copy of your rom.

Assignment 1 Details (Mac OSX)

Downloading the assignment files

Save this file, assign1_osx.dmg, somewhere on the hard drive, such as on the Desktop. Double click on it, and a new drive will automagically appear on the Desktop.

 

Editing your name

Double click on the new drive, named "assign1", to see its contents. Ctrl-click on the file name.bas, and use the "Open With" menu option to open it with a text editor, such as XCode or Project Builder if you have them, or TextEdit, which is in the Applications folder of every OSX Macintosh. Find the text on the 14th line of the file that says "YOUR NAME HERE". Replace that text with your own name, whatever name you prefer to be called. Be sure to use capital letters. Then save the file.

 

Compiling and assembling

For this, you will need to open the Terminal application. This can be found usually in the hard drive's Applications folder, or in the Utilities folder within that. You can use Finder's File/Find menu option to help you if you are having trouble locating Terminal. Once you have a Terminal open, you should type the commands that are listed below in bold text. The only change you should need to make to these commands is replacing my Andrew user id (rrost) with your own in both the second and third commands. If everything goes peachy, then your "assign1" folder should now contain a NES rom. In my case, the resulting file would be named "rrost.nes". This will be the file to turn in.

otherguy:~ bobrost$ cd /Volumes/assign1/
otherguy:/Volumes/assign1 bobrost$ ./nbasic name.bas -o rrost.asm
Read file name.bas (81 lines)
Beginning compile
Compile completed successfully.
otherguy:/Volumes/assign1 bobrost$ ./nesasm rrost.asm
NES Assembler (v2.51)

pass 1
pass 2
otherguy:/Volumes/assign1 bobrost$

 

(optional) Testing your rom

If you would like to test your rom, you will need to first find a Nintendo emulator on the internet. RockNES and Nestopia are good choices for the Macintosh. Figuring out how to install the emulator and load a ROM is up to you.

 

Turning it in

You should submit your rom to me by email. The address to send to is rrost+nes@andrew.cmu.edu. The email subject should be "NES Assignment 1", and the email should contain these items:

  • Your name, major, and year.
  • Your current status in this class. That might be one of these: enrolled, waitlisted, enrolled and maybe dropping soon (tell why), no intention of enrolling but participating anyway.
  • Your relevant skills and abilities. Common ones might be: programming, in-game art, concept sketches, other 2d artwork, game design, level design, story design, creative writing, interactive storytelling, music composition, personal hygiene.
  • A funny joke. The best ones will win a prize at the next class. One entry per person. Duplicate entries will be disqualified.
  • Your rom file, as an attachment.
  • Anything else you want to tell me or ask me.(optional) This might include a recent story about your life, bugs you found in the compiler (other than the win32 hexadecimal bug), an invitation to go on a date, recommendations of a good movie, or incredibly dorky technical information.

Assignment 1 Details (Windows)

Downloading the assignment files

For Windows computers, download this file, assign1_win.zip, and unzip it to a directory, such as the Desktop.

 

Editing your name

Open name.bas in a text editor. Notepad or WordPad should work well enough, or MS-DOS edit if you have that. On the 14th line, replace the text that says "YOUR NAME HERE" with your own name, whatever name you prefer to be called. Be sure to use capital letters. Then save the file.

 

Compiling and assembling

For this step, you will need to use the command line. Many Windows machines have a command prompt available from the Start Menu / Programs / Accessories. Another way to open a command is to go to the Start Menu, and select the "Run..." command, or hit the Window+R key. From the Run menu, enter command (for Windows 95/98), or cmd (for Windows NT/2000/XP).

Once you have the command prompt open, change to the directory where you unzipped the assignment. If you unzipped to the Desktop and it created a "nes1" folder, you will want to change to the nes1 folder. On most Windows machines, you can type "cd " (with a space) into the command line and then drag the nes1 folder into the command line to complete the line. Then hit enter. If this doesn't work, try one of the following commands, or panic.

cd "desktop\nes1"
cd "\windows\desktop\nes1"
cd "\documents and settings\username\desktop\nes1"

From the directory containing the assignment files, run the following two commands. You should replace my Andrew user id (rrost) with your own in both commands. If everything goes peachy, then you should now have a NES rom. In my case, the resulting file would be named "rrost.nes". This will be the file to turn in.

nbasic name.bas -o rrost.asm
nesasm rrost.asm

 

(optional) Testing your rom

You're on your own here. Find a NES emulator and try it out. It's up to you to figure out how to install the emulator and load a ROM. For Windows, I recommend the emulator Jnes.

 

Turning it in

Scroll up and follow the handin instructions listed for Mac OSX.


Assignment 1 Details (Linux)

Downloading the assignment files

For x86 Linux computers, download this file, assign1_linux.zip, and unzip it to a directory.

 

Editing your name

Open name.bas in a text editor, and on the 14th line replace the text that says "YOUR NAME HERE" with your own name, whatever name you prefer to be called. Be sure to use capital letters. Then save the file.

 

Compiling and assembling

From the directory containing the assignment files, run the following two commands. You should replace my Andrew user id (rrost) with your own in both commands. If everything goes peachy, then you should now have a NES rom. In my case, the resulting file would be named "rrost.nes". This will be the file to turn in.

./nbasic name.bas -o rrost.asm
./nesasm rrost.asm

 

(optional) Testing your rom

You're on your own here. Find a NES emulator and try it out.

 

Turning it in

Scroll up and follow the handin instructions listed for Mac OSX.


Assignment 2 - Midterm Project
General plan of attack due (approved) by Tuesday, February 10
Final product due Tuesday, March 16, at High Noon
Note that Spring Break is March 5-14. You really should try to have it done before.

General guidelines:

  • You may work alone or in a group of up to 4 people
  • Your project must be approved by me
  • You and your group must do "a satisfactory job" for you to pass this course
  • Your three options for this assignment are below. Pick one (or two if you're crazy).

General advice:

  • Design smaller. Scale your design back to match the talent and time your team has available.
  • I encourage you to work with people you don't normally work with
  • It's better to work with people who have different talents than you
  • For your own sake, you should finish before Spring Break, and only use the extra time for extra polish
  • 4-way scrolling is hard. More than 2 screens of 2-way scrolling is also hard. 1-way scrolling is not so bad. Non-scrolling games are teh awesomes!
  • You own the copyright to your game and any characters or story you create, and you are not required to hand the source code or development art assets over to me or anyone else. However, you may wish to make your game open-source (while retaining copyright), or even public domain (giving up your copyright). The choice is up to you. Development tools created for this assignment, except in extreme cases you should talk to me about, should be open-source. Retaining copyright on open-source software varies, depending on which license you choose.

Turning it in:

  • Email it to me here: rrost+nes@andrew.cmu.edu. You may send me the final product (game ROM, box/manual art, development tool, etc) in a zip file, or you may send me a link to a webpage containing all of those items.
  • The email subject should be "NES Assignment 2"
  • Include the names of all your group members, and the name of your game or development tool.
  • Tell me whether you want your project posted on the webpage. Submit source code and art assets if appropriate. See the intellectual property statement above.
  • You may send me preview versions whenever you like, if you want my comments and opinion on various parts of your project. Use a different email subject, such as "hey bob take a look at this k luv u thx".

Option 1: Development Tool

  • Should be useful to other people. Focus on utility and a clean and usable interface. (The usability of the interface varies based on the intended audience. Programmers usually put up with more crap and command lines.)
  • Should be cross-platform (Windows, Mac OSX, and Linux would be ideal), and easy to install. Be careful if you're thinking of requiring separate runtime environments, such as Perl or Python. For GUI applications, consider an API such as wxWindows, FLTK, GTK, SDL, or GLUT.
  • Should be public domain or other open-source license.
  • Examples of useful tools would be:
    • Various artist tools: sprites, background layouts, pattern tables, palettes
    • Music composition or programming tools. MIDI->NES?
    • Level editors for various types of games
    • A new NES-specific 6502 assembler, which could be combined with nbasic for a single application.
    • A visual front-end to nbasic and nesasm

Option 2: A Complete Game

  • Should work well. (No major bugs that make it not-fun)
  • Quality artwork. In-game art (obvious), Box art design (front and back), Game manual. Note that having an artist on your team really helps with this. The box and manual do not actually need to be constructed or printed. Digital images are fine.
  • Sound and/or music that doesn't suck, as appropriate.
  • Decent story if appropriate.
  • You must adhere to US copyright laws. No stealing art, music, or characters from other games and media. Create your own stuff, or make use of public domain material.
  • Remember that a small well-done game with good replay value can be much better than a huge platformer. And you'll get to sleep more.

Option 3: A Partial Game

  • You must complete the same game for Assignment 3, with the same team.
  • The final product (Assignment 3) will have the same guidelines as Option 2, except more so.
  • Assignment 2 should demonstrate major portions of the game. See me about what you plan to complete for the first part.

Assignment 3 - Final Project
Due Monday, April 26, 2004 (any timezone)

A Complete Game

  • Playable game, with start screen, gameplay, and end screen, as appropriate.
  • Box art and game manual images (see lectures for suggested guidelines)

Handin

  • Send an email with the subject "Assignment 3 Handin" to rrost+nes@andrew.cmu.edu. It should contain the following:
    • A timezone or city where it is still Monday, April 26 or earlier
    • The name of your game
    • The names of everyone in your group
    • ROM for your game
    • Box and manual art (PDF or web-friendly images, or ask me about other formats)
    • (optional)Source code for your game (ZIP file), if you want it to be open source. It will be assumed copywritten content and public domain source, unless you specify a license.
    • (optional)A simple webpage (single page with inline images and local relative links) for me to post in a downloads section of the class site.
  • Come to class on Wednesday, April 28, to see the games.
  • If you need a due date extension, contact me directly no later than Friday, April 23