Assembler Decision

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Assembler Decision

Post by cartlemmy »

I'm at the point where I want to start coding. I've noticed there's quite a few options as far as assemblers go, and seemingly no overall consensus as to which one is better. Though, I'm sure everyone has there personal preference, so I was hoping to find some sort of a comparison.

Is there any of the assemblers I should avoid altogether? Which one is the most commonly used in this community? Do any of the assemblers have features that make them really stand out above the rest?
User avatar
koitsu
Posts: 4203
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Post by koitsu »

I'd recommend you start with asm6; it keeps things bare-bones while offering a lot of functionality and uses a normal/"standardised" syntax.

You can "upgrade" to cc65 (ca65) when you get into more complex things.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

Ah, ok. So I shouldn't have to much trouble migrating from one to the other?
User avatar
koitsu
Posts: 4203
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Post by koitsu »

No, you will have *lots* of trouble. But you're just starting out, so I wouldn't worry about it.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

Haha, ok.
User avatar
Dwedit
Posts: 4470
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit »

I started with TASM, then moved to ASM6. It was easy enough to migrate from one to the other.

I liked how ASM6 has anonymous labels (- or + as a label), and INCBIN, two feature which TASM doesn't have. The ENUM feature where you declare a bunch of variables in RAM which doesn't emit any bytes is also great.
But I didn't like how ASM6 gave you mountains of "Incorrect Address" errors for a single mistake, so I went ahead and fixed the assembler to remove some situations which caused them.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
tokumaru
Posts: 12106
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

I have used ASM6 for the past couple of years and have no complaints. It's simple (i.e. easy to use for the first time) but very versatile.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

Dwedit wrote:...and INCBIN...
Yes, I could see using the incbin a lot. I am working on a tile/map editor that outputs to a binary file, I could use incbin for this right?
Dwedit wrote: The ENUM feature where you declare a bunch of variables in RAM which doesn't emit any bytes is also great.
If I understand correctly this just enumerates a value to a certain label, like a constant?
User avatar
koitsu
Posts: 4203
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Post by koitsu »

Dwedit wrote:But I didn't like how ASM6 gave you mountains of "Incorrect Address" errors for a single mistake, so I went ahead and fixed the assembler to remove some situations which caused them.
Now you're scaring away the n00b! :P Did you at least contact Loopy to have him incorporate the patch into the official source? (I do remember skimming the thread about the problem you describe...)
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

tokumaru wrote:I have used ASM6 for the past couple of years and have no complaints. It's simple (i.e. easy to use for the first time) but very versatile.
Cool. Is it possible to use mappers with ASM6? As far as I understand I will need to use a mapper for some of the functionality I want to implement.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

koitsu wrote:...Now you're scaring away the n00b! :P
LOL, error messages are a part of programming life. I'd rather see too many error messages, than use a compiler that neglects to mention things :)
User avatar
tokumaru
Posts: 12106
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

cartlemmy wrote:I could use incbin for this right?
Yes.
Dwedit wrote:If I understand correctly this just enumerates a value to a certain label, like a constant?
ENUM works kinda like ORG, but doesn't generate any output. It's great for defining variables.
cartlemmy wrote:Cool. Is it possible to use mappers with ASM6?
For mappers, look into the BASE statement.

Check out the ASM6 templates I made for a few of the simple/common/popular mappers.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

tokumaru wrote: Check out the ASM6 templates I made for a few of the simple/common/popular mappers.
Great, thanks! This will be very helpful.
User avatar
tokumaru
Posts: 12106
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

cartlemmy wrote:I'd rather see too many error messages, than use a compiler that neglects to mention things :)
Good, so stay away from NESASM. That assembler is commonly used by newbies because a few tutorials use it, but it's full of nasty little problems. Generating corrupt binaries when some errors occur instead of warning you is one of them.
User avatar
cartlemmy
Posts: 193
Joined: Fri Sep 24, 2010 4:41 pm
Location: California, USA
Contact:

Post by cartlemmy »

So, sounds like it's a safe bet to start with ASM6, I will start with that.

Thanks to everyone for their help!
Post Reply