Re: Why I never had made a NES game, really
Posted: Mon May 14, 2018 1:40 am
I started out with the wiki... I was never able to follow tutorials. I read almost everything there is to know about the PPU before I even started learning 6502 assembly language. In fact, I was just curious about the exact technicalities of the NES graphics hardware, and that's what got me into all of this stuff in the first place.
There are a lot of stupid basics you need to work out just to make something work. Even linking your compiled output into a working iNES ROM file feels like a stupid step when you just need to see results. However, it's necessary.
For me, the best approach was (after learning 6502 and perusing the PPU documentation on the Wiki) to just download's Tepples' "HELLO WORLD" template for CA65, and I just started modifying that in ways I figured would make sense. Of course that involved a ton of trial and error, but eventually I ended up with a platform engine scrolling in four different directions.
Honestly, everything in NES development can be summarized as "baby steps". Just take it one tiny step at a time. Moving am 8x8 sprite around with no backgounds or scrolling is a huge advancement the first time you do it.
This page is probably your most important reference by the way:
https://wiki.nesdev.com/w/index.php/CPU_memory_map
Everything you do in your 6502 code is moving numbers around as you mentioned. And the most important stuff is that reading from an address anywhere between $8000 to $FFFF in a standard NROM cart will let you read your program data. Reading or writing anywhere from $0000 to $07FF lets you read and store data dynamically in the NES RAM (do try to stay out of the $0100-$01FF range at first though, as it's used for the stack)
And finally addresses between $2000 and $2007 let's you communicate with the PPU, which is of course the primary method for communicating anything to the player. Don't worry about sounds for now.
There are a lot of stupid basics you need to work out just to make something work. Even linking your compiled output into a working iNES ROM file feels like a stupid step when you just need to see results. However, it's necessary.
For me, the best approach was (after learning 6502 and perusing the PPU documentation on the Wiki) to just download's Tepples' "HELLO WORLD" template for CA65, and I just started modifying that in ways I figured would make sense. Of course that involved a ton of trial and error, but eventually I ended up with a platform engine scrolling in four different directions.
Honestly, everything in NES development can be summarized as "baby steps". Just take it one tiny step at a time. Moving am 8x8 sprite around with no backgounds or scrolling is a huge advancement the first time you do it.
This page is probably your most important reference by the way:
https://wiki.nesdev.com/w/index.php/CPU_memory_map
Everything you do in your 6502 code is moving numbers around as you mentioned. And the most important stuff is that reading from an address anywhere between $8000 to $FFFF in a standard NROM cart will let you read your program data. Reading or writing anywhere from $0000 to $07FF lets you read and store data dynamically in the NES RAM (do try to stay out of the $0100-$01FF range at first though, as it's used for the stack)
And finally addresses between $2000 and $2007 let's you communicate with the PPU, which is of course the primary method for communicating anything to the player. Don't worry about sounds for now.