I already cast my vote, and was trying to stay out of this thread as much as I could, but tokumaru said something that warrants focus:
tokumaru wrote:Jumping straight into NES development without any prior knowledge of assembly is like going to college in a country whose language you don't speak... You're gonna have to learn the language and the subjects at the same time, which can be quite confusing. If you take the time to learn the language first, you're gonna have a much easier time with the subjects later on.
This is probably the most key point there is to make in this thread. So once again, I feel like I have to educate people as to the realities of software development on a platform and CPU that is foreign to the easy majority of people who want to get involved with it -- but this general advice applies to more than just the NES/6502.
If a person who doesn't understand 6502 assembly language is thrown into the fray that is ca65/ld65's config/template files and all the rest (having to explain all the SEGMENT and MEMORY bits in particular) they're going to become overwhelmed and annoyed quickly, likely giving up. I've had friends/colleagues of mine experience exactly that (one of them, funny enough, does low-level development; he actually worked at Hex-Rays!). This point applies
even if you give them pre-made templates, because eventually they're going to have to futz with it. Mid-lecture reminder: the person has no 6502 assembly knowledge, and learning that should be their primary focus at first. And to learn that, they need a tool that is simple and isn't going to get in the way of their primary focus (learning the language). It's something that should try to correlate as "close" as possible to what they'd see in a debugger.
This is where a "bare-bones/simple assembler" like asm6 has the upper hand. The only "convoluted" parts for starting out are the 16-byte NES header and use of
org. You can literally give them those for a simple NROM image and be like "we'll cover the details of this in a later chapter, for now use these lines to make the NES header and set the origin address to $C000 and focus on learning 6502!" People are going to prefer a copy-paste into a single .asm file over "here, extract this .zip, which has all sorts of crap in it, and then deal with paths and files and make sure you change X/Y/Z to reflect...", sorry to say.
IMO, ca65/ld65 present a fairly substantial learning curve (the config/template bits are, I think, still the #1 thing discussed here when people start using the cc65 suite, including for SNES development), and sometimes all it takes is "a complicated tool" to destroy someone's desier to learn an actual programming language/architecture. The learning curve with asm6, IMO, is substantially less, allowing the individual to focus more on the 6502 aspect than "the assembler and it's related 'stuff'". Dwedit's post on the first page sums it up.