NES Development

From apse

Jump to: navigation, search

Contents

[edit] NES Devlopment

[edit] Overview

[edit] Author

  • Tony Miller

[edit] Domain Objectives

The aim of this project is to gain a better understanding of theNintendo Entertainment System hardware through 6502 assembly language programming in a modern pc/mac environment(through the use of Nintendo hardware emulation). The product I hope to produce is a cartridge containing a simple program that plays music and displays a simple graphic. I will try to update my progress here.

[edit] Purpose

Much of my art is inspired by the culture that surrounded me when I was young; ridiculous cartoons, television, muppet babies, and pixelated video games. I've often tried to recreate the sounds of these old video games...but nothing compares to using the real thing. By digging deep into ancient hardware will I gain a better understanding of late 80s/early 90s children's culture? Probably not. But I will definitely gain a lot of computer science knowledge.

[edit] Description of Main Activities

Much of my activities will consist of mining the internet for technical documents and tutorials regarding programming the NES, much of which can be found at nesdev.parodius.com. I will be programming the code, music, and graphics all on my laptop, and possibly another PC if needed. The code will need to be burned onto a silicon chip for use in an NES cartridge. Due to the high price of EPROM burners, I will probably locate someone on a forum to do this for me.

[edit] Audience

People who are interested in electronic music and retro-computing will likely be the ones most interested in this project.

[edit] Project Evaluation

This is not an easy project. Assembly language is not for the faint at heart, nor is it for those with an involving social life. I may or may not succeed completely, but if I get the NES to do at least something, I think the project will be a success.

[edit] Description of Main Deliverables

The main product will be a cartridge containing my program, playable on any NES.

[edit] List of Tasks

[edit] Activities

I want my program to do the following things:
Display a simple graphic.
Play 3 or 4 different songs, selectable through a menu through the joypad.

Here are the major milestones that need to be accomplished:
1. Compose the music (easy).
2. Figure out how to play an NSF file(music).
3. Figure out how to display a graphic.
4. Figure out how to get the NES to play multiple NSFs in one program.
5. Figure out how to implement a menu system that selects an NSF through joypad input.
6. E-mail the code to someone with an EPROM burner and pay them to burn it onto an EPROM for me.
7. Hack open an old Super Mario Bros. cartridge, take out the rom, and replace it with my own.

[edit] 1. Compose the music

This part will be pretty easy. The tunes will be composed in a handy PC program called Famitracker.

I have completed this part of the project. You can download my .NSF files here. You need an NSF player to play them though...you can find one here.

Status:done

[edit] 2. Figure out how to play an NSF file

I have made the NSF files, so now I have to figure out how to insert them into a ROM image for playback. I am using this guide mostly for help, along with other documents at nesdev.parodius.com.

Finish date: 5-14-07

Status: I havn't got my code to compile yet...

[edit] 3. Figure out how to display a graphic

There are more many more documents available concerning NES graphics than audio, so this part shouldn't be too hard.

Finish date: 5-16-07

[edit] 4. Figure out how to play multiple NSFs in one program

This may or may not be possible, I havn't run into much information on the internet regarding how to do this.

Finish date: 5-20-07

[edit] 5. Figure out how to implement a menu system that selects an NSF through joypad input.

This is the last part of coding that needs to be done.

Finish date: 5-20-07

[edit] 6. E-mail the code to someone with an EPROM burner and pay them to burn it onto an EPROM for me.

There are people willing to do this on 2a03.org. I'm sure they'll only want $10.00 or something. I need to be sure to make time for the EPROM to get back to me through the mail before my project is due! Hopefully turnaround time will only be about a week at most.

Finish date:5-21-07

[edit] 7. Hack open an old Super Mario Bros. cartridge, take out the rom, and replace it with my own.

I'll need to buy an EPROM socket for this.

Finish date: before 5-30-07!

[edit] Resource Management

[edit] Budget

The only money I'll need is the money to buy the EPROM and EPROM socket, and paying someone to burn an EPROM for me. At this point, I only have about 3 more weeks to complete the project.

[edit] Schedule

I try to put at least an hour a day into my project. Here is my schedule for completing my coding requirements:

5-14-07: Playback NSF file.
5-16-07: Display graphic.
5-20-07: Play multiple NSFs and create menu system.
5-21-07: Mail off the eprom to be burned.
5-30-07: Have the cartridge assembled and ready for presentation before this date.

[edit] Optional Elements

[edit] Research

I have located several tutorials that I have been doing the bulk of my research on, all from nesdev.parodius.com:

joker21s guide
Nullsleep's NSF playback guide
GBAguy's tutorial