Results 1 to 9 of 9

Thread: What kind of tools/knowledge would you need to program a new NES game?

  1. #1
    Mindbender The Adventurer's Avatar
    Join Date
    Aug 2012
    Location
    CT
    Posts
    828
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default What kind of tools/knowledge would you need to program a new NES game?

    So. I've recently gotten interested in the notion of creating a NES game from scratch. I have a little understanding of software programming basics. While I admit I'm not particularly adept at game programming, I'm willing to learn what I need to.

    Anyway, sometimes amateur developers turn out original games designed to be run on NES consoles, or as a ROM to be run via Nintendo Emulation. Stuff like Castlevania Blood Moon and Battle Kid: Fortress of Peril. Are there prexisting developer tools to design games with the NES hardware? Or does it take esoteric knowledge of the hardware to program for it?
    New Comics for the Week of 10-03-12


  2. #2
    Administrator

    Join Date
    Nov 2003
    Posts
    3,346
    Thanks Thanks Given 
    275
    Thanks Thanks Received 
    39
    Thanked in
    32 Posts

    Cool

    nbasic (BASIC for NES) is all you need. To wit, nbasic is the friendliest way to program games for the NES and it can handle all but the most demanding of applications. I'd say to start with nbasic and if you need the all the power you can get from an NES to then and only then start learning assembly programming for the NES's CPU as it is significantly more difficult than BASIC.

  3. #3
    Strawberry (Level 2) Damaniel's Avatar
    Join Date
    Nov 2005
    Location
    Portland, OR
    Posts
    428
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    I've never tried using nbasic, but I've dabbled a little bit in programming the NES the 'native' way (6502 assembly language). It's quite a daunting task - while the hardware is well documented, assembly language programming can seem downright foreign for people whose primary programming experience comes from higher level languages (i.e. most of us, including myself).

    Another consideration is the relatively limited hardware. If you're not used to working with only 2k of RAM (and who really is these days?), then you might end up feeling really constrained. There are memory mappers that can help with this somewhat (I think that MMC5 gives 2k extra RAM at the expense of being a pain in the ass to work with), but those are an entirely different can of worms, as each of the mappers works differently and offers their own set of tradeoffs.

    My biggest complaint is that there isn't one good "here's how to do a basic game from start to finish" book for NES games. There's a lot of documentation out there, but the quality varies widely, some of it is very out of date, and there's no standardization on any particular tools (the assembly syntax varies greatly between assemblers, which makes using sample programs in different assemblers more of a pain than it should be). If I had all the time in the world, I'd sit down and make some VERY simple games, and use the experience to actually write a book (along the lines of 'Making Games with Python and Pygame') that provides source code to a few different simple games, and explains exactly how they work.

  4. #4
    Strawberry (Level 2) ccovell's Avatar
    Join Date
    Apr 2007
    Location
    Japan
    Posts
    554
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    It might be a little old, but when I made Solar Wars, I wrote a diary of development that showed how my game progressed from a simple gravity simulation to an actual game.

    http://www.chrismcovell.com/data/SolarWarsSource.zip

    33 assembly files are in there from the barebones start to finish. It might not help with learning assembly instructions, but at least you can see how an NES game is structured and the necessary routines (NMI, reset...) laid out.

  5. #5
    Strawberry (Level 2) tomaitheous's Avatar
    Join Date
    Nov 2007
    Posts
    446
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    1
    Thanked in
    1 Post

    Default

    You can try these out: http://www.nintendoage.com/forum/mes...&threadid=7155

    Nesdev forum and Nintendoage have people just like you learning to code on the old NES.

    I personally would stay away from any BASIC compiler for the NES. You'll run into restrictions real fast and if you decide to continue, you'll have wasted all the time with the BASIC environment and such. It's best to just jump in and learn Assembler first. The 6502 is very popular processor and there are tons of tutorials as well as emulators. A processor emulator is VERY helpful for people that never touched Assembly language. It allows you to step through your code, instruction by instruction, so see what's actually going on.

    It may seem daunting to learn Assembler for 6502, but it's just a matter of sticking with it and learning the syntax. Once you've learned something about the processor, you won't forget it. I mean, you don't need to be a 'pro' at Assembler to code in Assembler. Or to get game logic running along. Anyone can learn to program for the NES in assembler and such. It just takes perseverance and patience. Figure that it'll probably take about a year to learn the processor, video hardware, audio hardware, and the mappers. There are plenty of tools as well (debuggers) and a community for asking questions/getting help.
    Tom: That third elephant is so elusive, ya know.
    NFG: Elephants are so unpredictable.
    Tom: Especially in groups of three.
    NFG: Two pairs of three, no less.

  6. #6
    Mindbender The Adventurer's Avatar
    Join Date
    Aug 2012
    Location
    CT
    Posts
    828
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Quote Originally Posted by tomaitheous View Post
    You can try these out: http://www.nintendoage.com/forum/mes...&threadid=7155

    Nesdev forum and Nintendoage have people just like you learning to code on the old NES.

    I personally would stay away from any BASIC compiler for the NES. You'll run into restrictions real fast and if you decide to continue, you'll have wasted all the time with the BASIC environment and such. It's best to just jump in and learn Assembler first. The 6502 is very popular processor and there are tons of tutorials as well as emulators. A processor emulator is VERY helpful for people that never touched Assembly language. It allows you to step through your code, instruction by instruction, so see what's actually going on.

    It may seem daunting to learn Assembler for 6502, but it's just a matter of sticking with it and learning the syntax. Once you've learned something about the processor, you won't forget it. I mean, you don't need to be a 'pro' at Assembler to code in Assembler. Or to get game logic running along. Anyone can learn to program for the NES in assembler and such. It just takes perseverance and patience. Figure that it'll probably take about a year to learn the processor, video hardware, audio hardware, and the mappers. There are plenty of tools as well (debuggers) and a community for asking questions/getting help.
    Whoa. Okay, this is interesting.

    Thanks for all the help guys, I think you've got me on the right path. Gonna read up on those Assembler tutorials. We'll see if it leads to anything.
    New Comics for the Week of 10-03-12


  7. #7
    Insert Coin (Level 0) Custom rank graphic
    Masamune's Avatar
    Join Date
    May 2012
    Location
    U.S.A.
    Posts
    28
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    The above information is useful about programming for the NES. What would you suggest if you wanted to program Super Nintendo games from scratch?

  8. #8
    ServBot (Level 11)
    Join Date
    Oct 2003
    Location
    Michigan
    Posts
    3,811
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    While not NES-specific, you might find this useful - it's a 6502 tutorial that uses an emulator written in JavaScript, so you can compile and run the examples and tweak the values and instructions to see what they do right there on the page.

  9. #9
    Strawberry (Level 2) ccovell's Avatar
    Join Date
    Apr 2007
    Location
    Japan
    Posts
    554
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Default

    Quote Originally Posted by Masamune View Post
    The above information is useful about programming for the NES. What would you suggest if you wanted to program Super Nintendo games from scratch?
    I'd say start with the NES anyway. The SNES is far more complex to program than the NES, yet builds on top of knowledge needed from NES hardware: The SNES' CPU instructions are a superset of the NES'; the SNES PPU(s) have similar register locations as the NES, but about 16x the complexity (# of regs needed to write to) and the sound unit is its own "black box" CPU + RAM + DSP unit to program.

Similar Threads

  1. -----
    By Jive3D in forum Classic Gaming
    Replies: 6
    Last Post: 05-07-2014, 10:27 AM
  2. Test your video game system knowledge!
    By FantasiaWHT in forum Modern Gaming
    Replies: 52
    Last Post: 12-07-2008, 03:21 PM
  3. Old Football Program game,,Need help.
    By 80sGamer in forum Classic Gaming
    Replies: 4
    Last Post: 03-29-2006, 10:30 AM
  4. Are YOU a game knowledge ho?
    By RetroYoungen in forum Classic Gaming
    Replies: 40
    Last Post: 04-21-2005, 05:16 AM
  5. Test yer veedio game knowledge
    By QBert in forum Classic Gaming
    Replies: 53
    Last Post: 09-12-2004, 04:57 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •