Hey guys, so I was gonna follow this tutorial I found online to try and get something working so I can test out my sprites. Although I've worked wit C# and Unity many times, I have no idea about developing for the NES or with assembler yet. Just learning.
https://patater.com/gbaguy/day1n.htmAnyways the kid was using Nesasm, I downloaded it it, unzipped, and when I click on the .exe file, a window pops up saying it cant run on my pc?And get a updated version lol. NO idea.
Am I suppose to be opening this another way? Do this normally happen?
Also, is Nesasm even good to work with? I don't wanna build the game persay, but I wouldnt mind getting a project up so I can see how sprites are looking during game play. I have no problem learning a new language, just wondering the best "editor" to get things up and running to tinker with? Thanks, sorry this is kinda vague, just wondering the best way to get things started seems Nesasm wont even open for me lolll
A notice on
Patater's NES ASM Tutorials page discourages the use of this tutorial:
Webmaster's Note
This tutorial sucks. Don't read it. Please read a real tutorial like Nerdy Nights, instead. This tutorial is hosted for archival purposes and shouldn't be trusted for anything.
Do you know how to use the Command Prompt? If not, I encourage you to
search the web for windows command prompt tutorial next.
NESASM is an assembler. It does not come with an IDE analogous to Eclipse or Visual Studio. You don't run it directly from File Explorer in Windows. You launch it from the command prompt, from a batch file, from a makefile, or from a different IDE that has been configured to call NESASM on source code files (and no, I don't know how to configure your favorite IDE to call NESASM).
NESASM has its fans, such as zzo38 who maintains his own customized version. But it also has a lot of quirks. Most of us appear to prefer either
ASM6 (simpler) or
ca65 (more flexible).
Thanks : ) I'll look into ASM6 or ca65. I dont really care which I use because starting off I have no idea what is what haha, but after reading I noticed people seem to like those two more. So good call
Yeah I dunno, I guess I'm not cut out for the programming side, I've been spoiled by out of the out of box game engines. I just downloaded asm6 and nothing happens when I open the program file. Do this have to be open with the command as well? Everytime I read a thread or post I dont understand whats developers are talking about, they get into advanced things before I even read what I should be doing to start. hmmm. Makes me feel dumb figuring out how to get any of these programs up and running lol.
Yes, most assemblers are command line applications. They don't have any windowed interface, you run them from a command line or a batch file, or from some other program (e.g. IDE).
All assemblers are command line applications. They don't have graphical interfaces... They really don't need one, since their job is basically to take a text file containing the source code and spit out a binary file.
With simpler assemblers like ASM6 and NESASM you may even get away with dragging the source file and dropping it in the assembler (this will make Windows call the assembler while passing the source file as an argument), and the assembled file will show up. I don't recommend this because you won't be able to see errors reported by the assembler, in case there are any.
Are you seriously considering quitting just because you can't run a command line program? Most people just make a batch file that will call the assembler for them, so it's not like you have to type a bunch of stuff in a black screen every time you need to assemble something. But you can't be afraid of doing low-level stuff, because NES coding is ALL about low-level stuff. There are no classes, no events, no managers, no libraries... you have to do everything yourself from the ground up.
A command line program has no GUI. That doesn't mean they don't do anything.
Hold shift and right click inside the folder where asm6 is (but not on any particular file). You will see an option "Open Command Window Here". This will open a command prompt in the current folder. You can then type "asm6" and press enter to see its default output, which is how to use it.
To actually use it, you need to provide it an input .asm file, (and perhaps an output file if you want a different name.)
But just ask questions, we'll help! No need to quit.
No, no, guys Not quitting, just frustrated but I am too stubborn to not figure it out haha. So I got ASM6 open from the command, I actually knew how to do that, just thought my computer was being hard to get on with. But thanks for posting the reason you need to use : )
Quote:
"you need to provide it an input .asm file, (and perhaps an output file if you want a different name.)
Quote:
Sooo, i guess my next question is what do you guys think the best resources are to use as a tutorial kinda? I think I read the nerdy nights dont use Asm6? Not sure if there is conversion or not. I swear if I ever get through all this I'm writing a tutorial for dummies like myself, Starting with how to open from a command prompt hahaa But yeah, not quitting just needed some food in me.
I think nerdy nights is an okay tutorial, and NESASM is okay to learn with. (You might as well use it if you're following that tutorial.)
I wouldn't recommend using NESASM long term, but it works well enough to be useful, at least.
Someday I'd like to write a tutorial because I also don't like the available resources.
I think
https://skilldrick.github.io/easy6502/ does a good job of teaching 6502 assembly language without the need of external tools or anything. I'd honestly go through it before touching anything NES. Because NES hardware is where most of the problems come in, worth tackling that only when you already have some understanding of how the CPU works.
Edit: Oh... nevermind, easy6502 assumes other kinds of programming knowledge, and directs to wikipedia to teach things like hexademical which isn't very tutorialesque
And as rainwarrior said, it's not a crime to use NESASM for the tutorial, even if you do eventually plan to move away from it.
I wrote this:
Minimal example using ca65The goal was to help people get started using ca65. It's not a step by step tutorial, but it is a small working program that is heavily annotated, intended for you to dive in and see how it works.
Quote:
Someday I'd like to write a tutorial because I also don't like the available resources.
I know exactly how you feel, Kasumi.
Perhaps if I explain what I wanna do make things easier. I have no problem with straying away from which I decide to start with, for now just something to get me familiar with whats going on and has to happen : )
The goal for now is to get sprites on screen for viewing, because I am anal like that while designing lol Sure I can test animations in other software but there's nothing quite the same as pressing a button and see it walk across the screen. In a nutshell i'm interested for testing, not so much for game play just yet. So I don't need anything advanced going on? (idont think so anyway) Would nerdy nights end up giving me the basic foundation to get a sprite walking left to right, jump, etc? I guess basic button controls is all I wanna do right now and see.
rainwarrior wrote:
I wrote this:
Minimal example using ca65The goal was to help people get started using ca65. It's not a step by step tutorial, but it is a small working program that is heavily annotated, intended for you to dive in and see how it works.
I'm gonna check it out! all resources are needed badly lol But I can't complain you guys are always helpful here!
Go read the Nerdy Nights tutorial, as it will give you a baseline understanding of things, which is more than you have now. You don't build a house without a foundation. You need a foundation. Start there. I don't know how many of us need to keep telling you this before you'll do it. :-)
koitsu wrote:
Go read the Nerdy Nights tutorial, as it will give you a baseline understanding of things, which is more than you have now. You don't build a house without a foundation. You need a foundation. Start there. I don't know how many of us need to keep telling you this before you'll do it.
hahah I am gonna read it! I'm just making sure I'm reading the right stuff first. I come across numb I know : ) I just like seeing things work instead of reading, so i'm never sure what im getting into. Video tutorials is whats needed for a visual person such as my self, But yes indeed. imma go read there now.
Edit: although I got asm6 to open with the prompt I never tried nesasm, I get the error of not compatible with 64 bit windows.
I'd just stick with NESASM for now then. Nerdy Nights is good for starting out, and I believe it does get to the point of controlling sprites on the screen, but it probably teaches how to draw backgrounds first.
IIRC, the programs in the Nerdy Nights tutorials were built on top of questionable design decisions some times, like running all the game logic in the NMI handler BEFORE updating the PPU, using hardcoded OAM positions for sprites, or mixing the controller reading with the game logic. These things are not objectively wrong (as a lot of stuff found in GBAGuy's tutorials is), because they work fine in the small scope of the tutorials, but they don't scale up well to full games (if you try to do much more than what's covered in the tutorials, you can easily break the programs without doing anything wrong). This shouldn't be a problem if all you want to do is move and animate some sprites.
I get the error of not compatible with 64 bit windows for Nesasm. I tried changing the compatible in the properties files lol but didnt work either.
Weird... are you using
NESASM3? It works fine on my 64-bit Windows 7.
tokumaru wrote:
Weird... are you using
NESASM3? It works fine on my 64-bit Windows 7.
Thank you good sir! that was the issue, I downloaded the wrong one loll. Works now! Sweeeet.
If you feel to migrate to asm6 later, all the beginning Nerdy Nights lessons have been converted to asm6
here.
The first thing different with asm6 you might notice, except for a slightly different syntax, is that the .bank directives are gone in asm6, they don't really make sense in Nes development anyway (except when using certain mappers). The reasons they are needed in nesasm is because it's derrived from a PC Engine assembler, and for PC Engine HuCard ROMs it's required to divide the ROM in banks like this.
There's also
asm6 templates. NROM is the most basic one, and is what you are using in Nerdy Nights.