Page 1 of 3
Assembler Decision
Posted: Mon Oct 04, 2010 9:03 am
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?
Posted: Mon Oct 04, 2010 9:22 am
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.
Posted: Mon Oct 04, 2010 9:31 am
by cartlemmy
Ah, ok. So I shouldn't have to much trouble migrating from one to the other?
Posted: Mon Oct 04, 2010 9:47 am
by koitsu
No, you will have *lots* of trouble. But you're just starting out, so I wouldn't worry about it.
Posted: Mon Oct 04, 2010 9:48 am
by cartlemmy
Haha, ok.
Posted: Mon Oct 04, 2010 10:00 am
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.
Posted: Mon Oct 04, 2010 10:16 am
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.
Posted: Mon Oct 04, 2010 10:18 am
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?
Posted: Mon Oct 04, 2010 10:20 am
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...)
Posted: Mon Oct 04, 2010 10:20 am
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.
Posted: Mon Oct 04, 2010 10:24 am
by cartlemmy
koitsu wrote:...Now you're scaring away the n00b!
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

Posted: Mon Oct 04, 2010 10:25 am
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.
Posted: Mon Oct 04, 2010 10:28 am
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.
Posted: Mon Oct 04, 2010 10:29 am
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.
Posted: Mon Oct 04, 2010 10:37 am
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!