Disch wrote:
Part of the problem is people coming in without any prior programming experience. Those of us who came to nesdev FROM somewhere else didn't have much difficulty catching on because we pretty much already had the idea. What makes learning the NES as your first system especially hard is trying to swallow both its cryptic method of graphics programming, on top of learning how to use X assembler, on top of learning a new assembly language, on top of learning basic programming fundamentals.
Very well said. Meandering through some old posts I saw somebody complain that their assembler "threw up a black screen and disappeared", implying they had no knowledge of DOS. I thought about this a lot last night since I'm interested in a tutorial, and came up with the same problem that Disch mentioned. Forget Assembly, as days go by more and more people don't even know what the command prompt is. Where do the tutorials end?
In previous experience trying to learn new computer related things, I ran into this very problem: "Before you can do this, you have to learn this!" Then I'd get referred to some other person's tutorial (and a missing link to it), which was vaguely related to present subject. The same can be said for here...people have mentioned that the C64 guide is probably the best tutorial for 6502 out there, but yet...what do you use it with if you don't have a C64? Of course the answer is then to get a 6502 simulator/emulator/whatever, but...how do you use that? (I'm not saying I don't know how to use these things, but I'm referring to other readers).
I took a look at the C64 6502 tutorial, and it really is great. However as stated. this method sends the potential tutorial reader on a wild goose chase to search for a different software package (which they may or may not find), attempt to learn the software before even touching the tutorial, and then try to understand why certain parts of the tutorial may not apply to the simulator they are running stuff on.
My vote for prerequisite would be to attempt to write the book for somebody who has no prior programming experience. I doubt that we could write something so gracefully, but with that goal in mind, the tutorial would DEFINITELY be readable by somebody with some programming experience. Write it as simple and as slow as possible! Who cares if the reader has already programmed and knows what a variable is? They will breathe a sigh of relief and be more confident as they progress through introductory chapters, ready to take on the harder stuff.
Bah, I'm writing too much. My opinion (if it matters much here) would be to....
Have a complete compendium from binary/hex to 6502 to NES, all in one. No separate tutorials spanning different text files that will get separated via the net, but one file.
Furthermore, have the book have side sections supporting NesDev's recommended software suites, OR just go all out and design the entire document around the tools that should be used. It would be tough to decide which tools/assemblers/simulators/emulators to use in the book, but would alleviate any extra confusion that the tutorial would otherwise create. For example, right now I'm using NesAsm, but I've heard very good reasons not to use it. That's one more notch into my confusion bank, tripping me up on the way to programming the NES. If I could read an ultimate tutorial that sais "USE THIS EXACT SOFTWARE PACKAGE" and possibly even include it in a zip file with it (with the author's consent), then I would be stoked.
My vote (based off of reading opinions here and my own experience) would be to write the 6502 section using the "6502 Macroassembler & Simulator" by Michal Kowalski. Any opposed?
Even more to mention...what type of file format to use? A simple text file would be great, but what about pictures and diagrams? Perhaps PDF or (gulp) MSWord format?
I still suck at the NES, and I moderately suck at the 6502, but I would be really excited to start a 6502 section of the tutorial. Having the C64 guide as a side reference, it would be a great opportunity to filter out the good and bad, improve my own skills, and write an up to date document. At the very least it would allow me to contribute a little to a subject I know nothing about. What do you think?
Of course on the contrary, I definitely don't want to start on a defunct incomplete NES tutorial that is nothing more than a 6502 reference. Who else is excited about this?
Bah screw it, I am starting tonight on the 6502 stuff. The worst that can happen is that it gets rejected by tommorrow and I lose a couple of hours of writing. I need the practice anyway.