I'm new in NES dev
-
nesgamer
- Posts: 8
- Joined: Fri Jul 11, 2025 3:00 pm
I'm new in NES dev
I'm new in NES dev, got any assemblers for Windows and begginer-friendly? 
-
tepples
- Posts: 22993
- Joined: Sun Sep 19, 2004 11:12 pm
- Location: NE Indiana, USA (NTSC)
Re: I'm new in NES dev
Are you familiar with the Windows command prompt or the Bash shell included with Git version control software? If so, you can follow the instructions at nrom-template to get set up with ca65 and Python on Windows.
-
chatty
- Posts: 40
- Joined: Wed Dec 11, 2024 9:41 am
- Location: Brazil
Re: I'm new in NES dev
I know you didn't ask for this, but while you're at it, you might as well wanna follow a guide or something to make your own NES game. I recommend Nerdy Nights:
https://nerdy-nights.nes.science/
https://nerdy-nights.nes.science/
-
Dwedit
- Posts: 5257
- Joined: Fri Nov 19, 2004 7:35 pm
Re: I'm new in NES dev
Batch files are very good for people who don't like the command line.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
-
chatty
- Posts: 40
- Joined: Wed Dec 11, 2024 9:41 am
- Location: Brazil
Re: I'm new in NES dev
Yeah, but you gotta know how to code one of them in order to use them xp.Batch files are very good for people who don't like the command line.
-
nesgamer
- Posts: 8
- Joined: Fri Jul 11, 2025 3:00 pm
Re: I'm new in NES dev
Yep, but i use Windows 10. and i made my own assembler in Python. It's called NanoNES.chatty wrote: Fri Jul 11, 2025 7:49 pmYeah, but you gotta know how to code one of them in order to use them xp.Batch files are very good for people who don't like the command line.
It supports MMC5 features, and i am making my own game (It's the most complex nes games ever)
And i don't have a machine that has Windows XP running on it. Instead, i have a laptop that runs Windows 7 (it's probably the best windows microsoft made) by Positivo.
-
Pokun
- Posts: 3442
- Joined: Tue May 28, 2013 5:49 am
- Location: Hokkaido, Japan
-
Dwedit
- Posts: 5257
- Joined: Fri Nov 19, 2004 7:35 pm
Re: I'm new in NES dev
I think "xp" is an emoticon (eyes shut, tongue sticking out), not a reference to Windows XP.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
-
nesgamer
- Posts: 8
- Joined: Fri Jul 11, 2025 3:00 pm
Re: I'm new in NES dev
OH! the xp emoticon should be uppercase x and p. so it will be an actual emoticonDwedit wrote: Sat Jul 12, 2025 11:20 am I think "xp" is an emoticon (eyes shut, tongue sticking out), not a reference to Windows XP.
-
chatty
- Posts: 40
- Joined: Wed Dec 11, 2024 9:41 am
- Location: Brazil
Re: I'm new in NES dev
Indeed, that's it.Dwedit wrote: Sat Jul 12, 2025 11:20 am I think "xp" is an emoticon (eyes shut, tongue sticking out), not a reference to Windows XP.
Also, a Positivo machine... your hardware will really limit what you can do.
-
nesgamer
- Posts: 8
- Joined: Fri Jul 11, 2025 3:00 pm
Re: I'm new in NES dev
I am not using a Positivo laptop, chatty.
I just wanna need a assembler of my choice
Also i use Windows and 6502 Assembly
I just wanna need a assembler of my choice
Also i use Windows and 6502 Assembly
-
Dwedit
- Posts: 5257
- Joined: Fri Nov 19, 2004 7:35 pm
Re: I'm new in NES dev
Anyway, there are two major options for which assembler to use: ASM6 or CA65.
ASM6 is simpler in how to use, and much more direct about emitting bytes. You put in an instruction or .db statement, and it emits a byte to your output file. Then for advanced memory layouts, you can pad out to fill the bank, reassign the current address $ to a different value, then emit more bytes. Reassigning the current address is an unusual feature for an assembler, and it gives ASM6 a lot of power. However, it also does not stop you from misusing symbols, such as trying to jump an address from the wrong bank.
Meanwhile CA65 uses sections, and you declare what memory those sections go into. Then your source code files need to declare what section they are generating code for. I haven't really used CA65 much.
No assembler has a GUI, they're all command-line programs. So you should make a .bat file to launch the assembler to build the code. If you want something like an IDE, you should install a program like TextPad. TextPad can be configured for syntax highlighting. You can also set up a "Tool" to invoke your build.bat file in the project directory, and also set it up to let you double click on errors to take you to that line number.
ASM6 is simpler in how to use, and much more direct about emitting bytes. You put in an instruction or .db statement, and it emits a byte to your output file. Then for advanced memory layouts, you can pad out to fill the bank, reassign the current address $ to a different value, then emit more bytes. Reassigning the current address is an unusual feature for an assembler, and it gives ASM6 a lot of power. However, it also does not stop you from misusing symbols, such as trying to jump an address from the wrong bank.
Meanwhile CA65 uses sections, and you declare what memory those sections go into. Then your source code files need to declare what section they are generating code for. I haven't really used CA65 much.
No assembler has a GUI, they're all command-line programs. So you should make a .bat file to launch the assembler to build the code. If you want something like an IDE, you should install a program like TextPad. TextPad can be configured for syntax highlighting. You can also set up a "Tool" to invoke your build.bat file in the project directory, and also set it up to let you double click on errors to take you to that line number.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
-
segaloco
- Posts: 913
- Joined: Fri Aug 25, 2023 11:56 am
Re: I'm new in NES dev
Not in my experience, dot assignment was all too common in AT&T assemblers, generally your data segment looked something like:Dwedit wrote: Tue Jul 15, 2025 2:08 pm Reassigning the current address is an unusual feature for an assembler...
Code: Select all
var_a: . = .+2
var_b: . = .+4
var_c: . = .+4
-
Oziphantom
- Posts: 1980
- Joined: Tue Feb 07, 2017 2:03 am
Re: I'm new in NES dev
No, that is the most common, not having that power is really an outlier and even then you can do it in CA65 for those moment when you need to, or if you just want to avoid the how linking config and do it manually.Dwedit wrote: Tue Jul 15, 2025 2:08 pm Reassigning the current address is an unusual feature for an assembler, and it gives ASM6 a lot of power. However, it also does not stop you from misusing symbols, such as trying to jump an address from the wrong bank.
you typically have .ORG but * is the other common method.
-
Pokun
- Posts: 3442
- Joined: Tue May 28, 2013 5:49 am
- Location: Hokkaido, Japan
Re: I'm new in NES dev
Yeah either $ dollar-sign or an * asterisk ("star label") is very commonly used in many many assemblers for referring to or even reassigning the current address of the assembly PC. 64tass uses the star label.
So did you check out any of those I listed and Dwedit explained about?