It is currently Tue Sep 18, 2018 10:36 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 39 posts ]  Go to page 1, 2, 3  Next

Which assembler you use?
ca65 34%  34%  [ 28 ]
asm6 34%  34%  [ 28 ]
nesasm 16%  16%  [ 13 ]
dasm 4%  4%  [ 3 ]
wla 1%  1%  [ 1 ]
tasm 1%  1%  [ 1 ]
p65 2%  2%  [ 2 ]
custom 8%  8%  [ 7 ]
Total votes : 83
Author Message
 Post subject: Assembler of your choice
PostPosted: Wed Dec 15, 2010 12:38 pm 
Offline

Joined: Sat Jan 23, 2010 11:41 pm
Posts: 1161
I would like to get idea which assemblers are most popular for NES development today. Please vote for one you use currently. If you use something else, post it in thread.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 12:55 pm 
Offline

Joined: Mon Nov 16, 2009 5:59 am
Posts: 110
I use neshla :p and hope to change to: hlakit when it's 100% completed


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 1:18 pm 
Offline

Joined: Sun Apr 13, 2008 11:12 am
Posts: 7516
Location: Seattle
For no particularly good reason, I'm using xa65. (It was the only 6502 assembler available in debian when I started)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 2:34 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20552
Location: NE Indiana, USA (NTSC)
lidnariq wrote:
For no particularly good reason, I'm using xa65. (It was the only 6502 assembler available in debian when I started)

And it still is the preferred 6502 assembler in Debian. It appears that the only way FCE Ultra could get into Debian and Ubuntu was as a requirement for EFP, a Free NES game made with xa65. And even that's not enough for Fedora. Someone on fedora-legal appears to think the noninfringing use is not clearly substantial, comparing hundreds or thousands of infringing ROMs in a GoodNES set to only a few dozen playable games on pdroms.de and citing Nintendo policy.

I use ca65. There's a request to package ca65 in Ubuntu Launchpad, but it's easy to compile from source after you sudo apt-get install build-essential. I like its auto-unroller (.repeat), function-local labels (.proc), and the flexibility of using object files and a linker script in much the same way that I have on the PC and GBA.


Last edited by tepples on Wed Dec 15, 2010 2:47 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 2:40 pm 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7517
Location: Chexbres, VD, Switzerland
I use Wla but I guess the "proper" choice is CA65 because it has the most features.

_________________
Life is complex: it has both real and imaginary components.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 4:06 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10803
Location: Rio de Janeiro - Brazil
CA65 seems like a very professional choice, and I guess I would use it if I didn't have to spend so much time tinkering with it before getting it to do anything useful. NESASM is the exact opposite of that: it's very easy to use, but it's also very crude, full of little annoyances and bugs.

The best thing about ASM6 (my assembler of choice) is that it's easy to use, making it just as suitable for beginners as NESASM (but since the popular beginner guides use NESASM, it gets the most attention), but it gives you enough freedom to make programs as complex as you want because that are features to make that easier.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 9:11 pm 
Offline
User avatar

Joined: Wed Dec 06, 2006 8:18 pm
Posts: 2827
I prefer ASM6 for ease of use and flexibility.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 15, 2010 9:45 pm 
Offline
User avatar

Joined: Tue Aug 19, 2008 11:01 pm
Posts: 186
Location: Japan
Currently I use ca65 for my main project, but I fire up ASM6 when I need to make a little test program because it's easier to produce a ROM from scratch. I might try ASM6 for my next project since it gets so much praise, but I'm too far along in my current project to make the switch now.

I also have a copy of NESASM on my computer in case I need to help a beginner who is using it.

tokumaru wrote:
since the popular beginner guides use NESASM, it gets the most attention


It would be really easy to "port" those tutorials over to ASM6. If somebody did the conversion work for him, I wonder if bunnyboy would mind swapping them out or at least posting the two versions together.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 12:16 am 
Offline

Joined: Mon Sep 27, 2004 2:57 pm
Posts: 1253
I think I might be the only person on Earth who uses DASM. :(


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 1:47 am 
Offline
User avatar

Joined: Wed Nov 24, 2010 12:51 am
Posts: 44
Location: Finland
I recently started coding for the NES some weeks ago. I followed the tutorial at nintendoage and I started using NESASM. This week however I changed to ASM6 because it seems to me that people are preferring ASM6 over NESASM here at NESDev, so I wanted to change assembler before I learned to code with NESASM. But in the end I think they are quite similar.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 5:47 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 3127
Location: Tampere, Finland
I use CA65. The only thing I have to complain about it is that when there's an error in a macro block, it doesn't display the exact line of the error, it displays the line where the macro was called. Also debug line info isn't stored for macros and .repeat blocks, so debugging long macros can be a pain sometimes.

Drag wrote:
I think I might be the only person on Earth who uses DASM. :(

I used to use it, but there were some obscure bugs in it. Generally it works fine though. Seems to be hot stuff in the Atari 2600 scene.

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 1:03 pm 
Offline
User avatar

Joined: Sat Oct 29, 2005 2:09 am
Posts: 504
Location: Indianapolis
What, no love for X816? I like X816 and have been using it for a long time now to do NES and other random 6502 coding. It's fast, has all the stuff I like (incbin, relative labels, etc) and works.

Sometimes I will use tasm, but mainly if I'm doing something with copynes. These days, if it's 6502, it's X816.

_________________
/* this is a comment */


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 1:06 pm 
Offline

Joined: Wed Feb 17, 2010 5:42 pm
Posts: 383
I use NESASM..just because i don't really know how to use others,except ASM6.
And it's too late to convert it into another assembler.
Plus NESASM have most of tutorials based on it.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 1:54 pm 
Offline
User avatar

Joined: Sun Nov 09, 2008 9:18 pm
Posts: 1107
Location: Pennsylvania, USA
Like MetalSlime, I use CA65 for my main big project and ASM6 for testing things. I used to think CA65's ability to use segments made it way easier to re-organize data than assemblers such as ASM6, but I didn't realize until recently you could have one top level source file whose sole purpose is to organize all your code and data across banks and simply include the source files and data. It's just a different way of accomplishing the same result.

Even so, I still like some of CA65's syntactic perks, such as .lobytes and .hibytes, scopes, etc. Scopes are nice, because they allow you to re-use some label names in the same chunk of code, instead of anonymous labels for example.

As for how difficult it is to set up, I think it is about the same. The "config" file which you use to set up memory areas and segments, is really like the top level bank organization source file you might have in an ASM6 program. From my sound engine demo:

Code:
#Config file for SoundEngine

MEMORY
{
  #iNES header
  HEADER:   start = $0,    size = $10,   fill = yes; 
 
  #ram
  ZP:       start = $0,    size = $100,  fill = no;
  STACK:    start = $0100, size = $100,  fill = no;
  RAM:      start = $0200, size = $600,  fill = no;
 
  #prg-rom
  ROM0:     start = $8000, size = $4000, fill = yes;
 
  #fixed prg-rom
  ROMFIXED: start = $c000, size = $3ffa, fill = yes;
 
  #vectors
  ROMV:     start = $fffa, size = $6,    fill = no;
 
  #chr-rom
  CHRROM0: start = $0000, size = $2000, fill = yes;
}

SEGMENTS
{
  #header
  HEADER:   load = HEADER,   type = ro,  optional = yes;
 
  #ram
  ZEROPAGE: load = ZP,       type = zp,  optional = yes;
  STACK:    load = STACK,    type = bss, optional = yes;
  BSS:      load = RAM,      type = bss, optional = yes;
 
  #prg-rom
  ROM0:     load = ROM0,     type = ro,  optional = yes;

  #fixed prg-rom 
  CODE:     load = ROMFIXED, type = ro,  optional = yes;
 
  #vectors
  VECTORS:  load = ROMV,     type = ro,  optional = yes;   
 
  #chr-rom
  CHRROM0:  load = CHRROM0,  type = ro,  optional = yes;
}



The "fill = yes" and "size" parameters work like .pad in ASM6. "start" is like .base. The "fill = no" usually would be used for RAM where you're just incrementing the program counter with reserve statements but not outputting any bytes.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 16, 2010 2:57 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20552
Location: NE Indiana, USA (NTSC)
kevtris wrote:
What, no love for X816?

Not everyone wants to fire up DOSBox or a FreeDOS virtual machine just to compile something. That's the single reason why I moved LJ65 from X816 to ca65.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 39 posts ]  Go to page 1, 2, 3  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group