Hello, I'm a noob. I understand the basics of 6502 assembly, and I really want to apply that to programming for the NES. I've found lots of information about what assemblers not to use and what tutorials not to follow. Can anybody tell me specifically what assembler to use and what tutorials to follow?
It's bogus spending hours and hours learning to use an assembler like NESASM only to be told that it's for "beginners" and you need to switch to something else, or to follow a tutorial and then have people tell you "the guy who wrote that didn't know what he was talking about and you should forget everything in it". What assembler is best for advanced programming? CC65? WLA DX? If you were a Hudson Soft or Konami employee what assembler would you be using? Is Neshla not even being updated anymore?
Are there any tutorials that were written by people who actually knew what they were talking about? Especially ones that don't start by teaching you how to draw a happy face on the screen and end with "Or something like that, I'm not really sure about it, but you can figure it out on your own. Dumb smiley face. I'll cover scrolling, collision detection, and all the other things that you actually have to know in order to actually make a game in a future tutorial. This tutorial will be updated regularly! Last update September 17 2001"?
I apologize if these questions have been answered repeatedly or if they sound "dumb". As other people have mentioned the search function doesn't function and it's difficult to find information based on message titles.
oxymoron wrote:
Hello, I'm a noob. I understand the basics of 6502 assembly
From Apple II, C=64, or what other platform? I'm just curious.
Quote:
What assembler is best for advanced programming? CC65? WLA DX? If you were a Hudson Soft or Konami employee what assembler would you be using?
Probably ca65 (cc65 without the inefficient C compiler). If I wanted to do high level assembly, I'd implement a compiler that spits out source code suitable for ca65.
You have many good assemblers, I use WLA-DX and I think it is very good. I don't know if it is better or not that CA65, though. NESASM isn't very good and quite newbe-ish, but you can work with it.
Actuall most tutorials are okay exept GBAGuy's. So just avoid it.
Check out NES 101 my Michael Martin. It's on the nesdev main page. It's a good tutorial for beginners (IMO) that already understand 6502. There is nothing wrong with starting out with nesasm. I started out with it. However, as you learn more and expand your games (or demos) you'll want to switch to a more flexible compiler. I've recently switched to wla-dx.
Thanks for the advice everybody.
tepples wrote:
oxymoron wrote:
Hello, I'm a noob. I understand the basics of 6502 assembly
From Apple II, C=64, or what other platform? I'm just curious.
I haven't done assembly programming for anything other than the NES. I started learning last year (mostly using NESASM) but when I switched computers I never got around to copying the files over. Now that I have I've decided to start over from the beginning so I can try to actually understand everything. So instead of going for NES tutorials I read 6502 documents so I could actually understand what things do rather than just following "do this because it works" examples. But when it comes to actually applying it to the NES, there are a lot of documents that seem to say different things and I don't know which ones to trust.
When you say ca65, do you mean specifically the file ca65.exe that's part of the CC65 package?
Is there anything in the NES 101 document that doesn't apply to using CA65, or anything to look out for that might be different? I tried using NES 101 last year but I vaguely remember there being something in it that didn't work with NESASM so I ended up using a different tutorial that was written for NESASM (which I can't find now, but it wasn't GBAGuy's).
oxymoron wrote:
When you say ca65, do you mean specifically the file ca65.exe that's part of the CC65 package?
Yes. Use ca65 to assemble and ld65 to link. I don't like to call the cc65 package with the C compiler removed "cc65" because people will think I'm talking about the C compiler itself, which is both inefficient and non-free. The remainder of the package, ca65+ld65+ar65, is free software and analogous to GNU Binutils.
Thanks Tepples.
How does Brian Provinciano's NESHLA compare to the rest?
From what I've tested, NESHLA is absolutely atrocious and unhandful. It cannot compile normal 6502 programms nor it can compile C programms, but actually you have to learn Bripro's mix of both, and that is really confusing and ineficiant.
From what I've tested, Visual Basic is absolutely atrocious and unhandful. It cannot compile normal BASIC programms nor it can compile C# programms, but actually you have to learn Bill's mix of both, and that is really confusing and ineficiant.
It's just a different language, and if you can get used to it, then you can use it.
Exept after starting coding with it I've realized they was no equivalent to .db nor to .incbin, even after searching hours.
I still think there is a way to include some data to your programm, but the doccumentation is quite bad, so I recomand to stay away from NESHLA.
Bregalad wrote:
Exept after starting coding with it I've realized they was no equivalent to .db nor to .incbin, even after searching hours.
In three minutes I found
NESHLA .incbin. I think
arrays correspond to .db.
But yes, NESHLA is a different language, and it's different from the bare metal experience of CA65 or P65.
Oh, thanks tepples. Actually the problem wasn't incbin I think it just was .db, and I didn't want to make files for each palette entry or so.
Now you make me in doubt : Was it really a good idea to give up experience with NESHla so early ?
I think someone experienced with high level languages would found it more confortable, but this isn't my case.
Learn C. You'll need it in order to make tools for, say, precomputing frequency tables and trig tables, for compressing CHR and maps, and (if you plan on making games) for editing scenario components.
Eh, you don't have to use C for that. I personally use FreeBasic for small utilities, as I find it's faster and easier to get a small command-line utility up and running in Basic than it is in C.
But hey, whatever floats your boat.
I think tepples is right. I've always done my tigonometry tables by hand (well, for a circle of 16 points I've used so far this isn't much an issue), and the same with my 384 entries frequency table I use in my most advanced sound engine (I made the values with M$ excel, and how BORING it was to align all these values to be usable).
The only compression I've used up now are DTE and RLE, wich are do-able by hand.
But I'll learn C when I'll get some time. Maybe I could go with some basic, but I have to learn C later anyway to write high quality tools and GBA games.