I just wanted to offer a couple tips, and of course it's totally up to you whether you want to follow them or not. These are based on my experience but I believe they would apply to most.
PiXL wrote:
Woah! Talk about going into the details! I like it!
In the future you will most likely want even more details, and I'd recommend the NESdev wiki as an invaluable source for all sorts of tech sheets on the console, updated and verified, with very thorough descriptions.
That being said, I'll be the first to admit that I was highly intimidated by the data sheets at first. Even some of the more specific details in Nerdy Nights were confusing to me in the beginning. You're unlikely to understand why every write to the hardware happens, what can be changed and what must be left the same, right off from the beginning. And I don't think you necessarily need to. I think a focus on learning the fundamentals, how the language works, and how to approach the logic for the platform is more important in the beginning. Then, when you start to get a grasp on those things, that knowledge will begin to elucidate the more esoteric pieces of information.
I'm not saying not to read every portion of the tutorials. Definitely do, and take what you can. I'm saying, if your focus is software development, don't get caught up if you can't figure out, for example, why every step of the startup sequence has to happen as it does. I'd focus more on the operators, getting really used to what they do and how they work together, and you'll get to the point that you can look at the startup code and see what's going on.
Sounds like you're on the right track. I'd highly recommend bookmarking this page:
http://www.obelisk.me.uk/ specifically the 6502 instructions. Any time you're stuck on figuring out how to do something, look at the operators you have available, consider what sort of indexing options they have, and think about the best way to solve it. You'll eventually memorize this stuff over time. You'll eventually memorize the parts of the hardware stuff you need because you'll have to look them up to do things.
Somewhere after getting a good fundamental grasp of the operators is getting a good fundamental grasp of the flags. These can be a little tricky but just as important. Primarily, carry, zero, and negative. The rest, I feel, aren't worth racking your brain over until they can come more easily.
Choosing ca65 as a starting point is a good call, as you'll have the highest range of options available to you, without a hurdle of restructuring your program later. As far as I know, no other assembler will let you do things like linking with C code, linking with 6502 simulators, or source level debugging.
Most importantly, have fun. If you have a reason to want to do it, you'll have a reason to learn. Welcome to NESdev!