I have some thoughts on this matter, and I'd like to share some of my beginner experiences.
At some point eary in my exploration, I downloaded tepples's example project file. I remembered my days as a kid beginning qBasic by monkeying around with the Gorilla banana toss game. I thought I could get some grasp of what's going on by just looking at it. I have to say though it was a bit much for me at the time. First thing I notice is, "Woah! this is a lot of files!" but I didn't give up immediately. I believe I most likely went into main.s first. Now something like, ".include", i can gather from context. I'm knowing at this point that I'm going to have to reference most of the instructions to understand them, but I believe the point at which I realized that this was beyond me is when the highly descriptive comments went over my head.
Now this experience is not meant in any way to reflect poorly against the template created by tepples. It is obviously something intended for someone with enough experience to at least know what an NMI is. I will probably use this template if/when I transition to ca65. The point that I aim to make is that without appropriate hand-holding, templates can be intimidating to a beginner.
I believe this intimidation can be amplified by templates with a lot of files, and arguably by better written code, but isn't exclusive to it. I feel that things like the setup code can be very confusing to a beginner and are really better of left alone for a while. If that stuff EVER needs to be messed with, odds are you'll feel comfortable doing so when it's needed.
Really I believe the benefit to Nerdy Nights was the separation of steps and the fact that I could pretty much skip to the part where I'm putting graphics on the screen. From there, I was able to identify a single element of NES development from which I could see immediate results. The sort of thing I'd wanted to see since I was a child; my graphics displayed on screen by a Nintendo Entertainment System.
I believe being able to separate a single sandbox from the complex parts was what made it work for me.
Also, before any of this, before I even downloaded the NES template, I went to the Easy 6502 tutorial. I have to say, I've thought about it, and I believe this may be the best very first tutorial for a beginner. No tools are required; the web page has an embedded emulator. You're not messing with complex hardware idiosyncrasies but basic assembly concepts and opcodes. Using this tutorial was the first point at which I thought, "So this IS possible..."
thefox wrote:
Well, in this thread it has been argued that beginners shouldn't be making linker files, and should use ready-made templates instead. (Note that all assemblers have this burden to some extent: a beginner is not going to easily understand vectors, or NESASM's banking system (and how it relates to iNES banks), or how to use .org properly. So they will need some kind of a template to start with.)
I've thought about this too and I feel the wording should reflect the option to use a template. Also though, considering that (currently at least) a majority of users have preference for ASM6 as a first assembler, I think it would be unfair to not, in some way, briefly describe why this assembler may have a higher learning curve.
tepples wrote:
I combined MagicKit and NESASM in my snapshot because they are the same product. MagicKit has that name...
Can you explain a little more about the snapshot? Should I integrate your changes into my next draft or add my changes to your snapshot?
Another thing that I am unsure about on the draft is the amount of content dedicated to the Nerdy Nights tutorial. Now, this currently being the defacto tutorial, I feel like it's kind of a obligatory service to not necessarily guide a person there, but to consolidate information to help a person make an informed choice on acquiring tools before approaching it. However, I think there are a few issues with having arrows pointing toward that tutorial. For one, it's not a part of NESdev and won't be perpetually updated by the community; two, it targets a non-recommended assembler, and three, I believe most experienced 6502 coders would agree that it doesn't always teach the best practices. For the sake of doing what works for now, it seems the simplest method to provide links for Nerdy Nights related info. The problem with this I see though, to easily direct a beginner in using ca65 or (to a lesser extent) asm6, pretty much requires a tutorial for the tutorial. It's probably the easiest, as most of this work has already been done, it just needs to be consolidated. However, it's surely not the cleanest solution.