Hey, guys. First post, so... bear with me if I say something that's incorrect or something.
So, I'm extremely interested in NES Development, basically because I'm a hardcore retro gamer/collector. Go figure, huh? Anyway, I've been really interested in creating my own NES game for about a year now, but I have no idea how to start or where to go for resources.
So here's a few details about me that, I hope, will help you point me in a good direction.
1. I have no experience in programming other than GML (Game Maker Language for the Game Maker program by Mark Overmars. Not that sophisticated from what I understand). I've never taken a programming course or know anything about legitimate programming.
2. I have looked at the Nerdy Nights posts on NintendoAge, but I still feel lost.
3. I have downloaded NESASM3 and opened it with the Command Prompt (after I understood the software has no GUI); however, I have no idea what to do after that.
So, anyway, what I'm looking for, I guess, is perhaps a tutorial that covers all the basics 'n' such. PPU, what I'm sure is a basic term, is over my head.
I'm more than willing to put forth the effort, I just need a sense of direction and I need to know what the heck is going on.
Thanks for reading and replying. =)
Step 1: Teach yourself freshman computer science. I've compiled a
big list of Wikipedia articles that cover concepts that all NES developers should know.
Start at lesson 1 at nerdy nights, read it a zillion times, ask questions here about it, we'll help explain. Or you can just mail me if you want with questions.
NESASM3 is basically just pointer to the main program file and everything is in there. If you open it without anything, nothing will happen because it's not pointed to a file to make into a .nes ROM.
But yeah, start at lesson 1, read it a zillion times, and just report back here, to me, or anyone else willing to help 1 on 1. All questions can be answered. And a little other tidbit of advice: if it's too complex, you're probably over thinking it.
P.S. Before Tepples comes in here, game maker is dead. heh.
hi Nightowlrjm,
No programming experience? Hmm. Well here are things I'm thinking:
1.) Do you use Windows? If so, have you ever run Calculator? It's under 'accessories'. My computer science teacher in high school taught us something very cool, to me at least
, early in the semester. It was about using a different base number system... like binary; that's base 2. Well, with calculator you can convert from decimal (the number system we use, it's base 10) to binary. Open calculator and and click the View>Scientific menu option. Next click the number 4. That's in dec (decimal)... and to convert it to binary click bin. It should show 100. 4 in decimal mode is equal to 100 in base 2 (binary).
That's a starting point, I guess. : )
2.) You should probably read an intro to assembly language book... there are some linked to in our
wiki. "introduction to computing systems" (second edition) by patt & patel is an excellent textbook from the University of Texas. The only problem is that they teach you an assembly language they created; the nes uses 6502 Assembly. It is a great introduction to assembly though... the second half introduces you to the C programming language.
3.) Try asm6 for your assembler.
I'd recommend sticking to NESASM3 strongly though.
I would not recommend any version of NESASM, having seen a little bit of disassembly of the Battle Kid 2 demo. No zeropage instructions anywhere, from a bad assembler.
Wow, seriously? Someone should tell Sivak about the <label syntax, since last I heard he was hurting for space.
Dwedit wrote:
I would not recommend any version of NESASM, having seen a little bit of disassembly of the Battle Kid 2 demo. No zeropage instructions anywhere, from a bad assembler.
Learn to use it, problem solved!
Alright, I'm gonna go read Nerdy Nights Lesson 1 a lot and come back. Thanks for all the great responses.
I'd say doing a little romhacking might help. Start with the easy stuff, graphics, text, etc. This way you learn about hex editors.
Then learn to use a debugger, and give yourself Infinite Lives in SMB1.
I still find romhacking hard, and I've been doing NESDev for a while now.
I would also not recommend nesasm and rather asm6 but as a noob it might be a little better if you start out with what the tutorial wants you to...no use running into syntax errors every 5 minutes. (if someone disagrees I recommend someone to "translate" nerdy nights to asm6...shouldn't be too hard)
Instead of ROM hacking you could also try making LUA scripts for FCEUX (an emulator popular for its debugging capabilities). It is a scripting language that is executed on top of the game. The interesting part is that the code is not actually saved in the ROM you're using and it is a high-level programming language.
Still, it can teach you how NES games use the small amount of RAM the console offers and maybe how hexadecimal numbers work.
A good way to start out with that is by looking at the LUA language documentation, the FCEUX documentation with information about the LUA implementation and the scripts the emulator comes with.
Also you can try altering graphics of games with a program called YY-CHR.
It is pretty straight-forward, so I'd say you might even be able to learn how to use it just by playing around with it.
That can teach you a bit about how NES graphics work and some of the limitations you will have to face.
@Jeroen
There is a translation of the code (not the actual tutorials) that is used in the Nerdy Nights Tutorials to ca65 code. It comes with a makefile and a simple config file and I used it to learn how to use that assembler.
There are some things that are not explained though.(Using macros for example)
However, I'm not aware of any asm6 versions of the code.
I felt this lost a few months back. Here are some books that really helped me out. Most of them are less than $5 used on Amazon.
An Introduction To Microprocessors: Volume 0 by
adam osborne
-This book starts out super basic, you could probably even skip a few chapters. The book explains logic units, binary numbers, and general microprocessor info in great detail. It's old, but it gives you a feel for the generation of technology surrounding the NES.
An Introduction To Microprocessors: Volume 1 by
adam osborne
-Covers Boolean Arithmetic and Algebra. Goes into much more depth on computer logic units.
Programming the 6502 by
rodney zaks
-I haven't actually read this since I've decided to learn the Z80 instead of the 6502. But his book on the Z80 is what I'm reading right now and it has helped a ton. Learned a lot from this guy.
A bunch of other great books can be found in PDF form here:
http://www.bombjack.org/commodore/books-generic.htm there are a number of 6502 books at the bottom of that page.
Thanks again. I ran into a busy streak... a long one... but I'll be heavily diving into this in about a week. =)