NES game creation (noob with no programming skills)
Moderator: Moderators
NES game creation (noob with no programming skills)
A Friend of mine and I want to create an NES game. I have a PowerPak, so I have the hardware to play it on. With no programming skills, what is the best and easiest way to make an NES game? Asking here (after doing a google search) since there are more active people in this area than anywhere else. We may also want to edit an existing game and add updated grafix (was thinking of making an NES version of Super Metriod 3)
thanks!
thanks!
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
Well, as you'd expect, as a programmer I highly advise you learn the 6502 assembly language. Learn about the NES, and all the limits that you have to work with. There really is no "easy way" to make a NES game. If you want a game to truly be how you want it to be, you have to make a game engine, which involves coming up with level/map formats and ways to store music and how you'll handle AI (and much more). This, of course, requires knowledge of a programming language.
Learning 6502 isn't the hardest thing in the world. Once you understand the basics (loading and storing, loops, subroutines, etc.) you have a lot to work with. After learning the basics you can study more in depth as you program. You can see exactly how everything works and have a better understanding. Though this comes with time.
If you're thinking of using Metroid as a ROM to hack and make Metroid 3, I'd say that you're going to find yourself rather stuck in a lot of places. Metroid I'm pretty sure only allows for 256 unique screens. I assume Super Metroid allows for a lot more. Also, it doesn't know how to handle a lot of the items you get in Super Metroid. You'd have to probably program in handling what exactly those items do.
Also, I was incredibly disappointed when I played Metroid one, because I'd played it after I'd played a lot of Super Metroid. The fight with Kraid is ABYSMAL! You'd probably want Kraid to be about two screens tall like he is in Super Metroid. I'm pretty sure that's not happening with Metroid one's engine. If you could prove me wrong, great. But I suggest that you learn how to program, as I learned how to program for the NES completely from scratch, because you'll find yourself able to get a lot further.
For some starting out tutorials:
www.freewebs.com/the_bott/gbaguy.zip
I don't know if this guy's tutorials are around on his site anymore, so a while back I saved them and uploaded them onto my site. Anyways, lots of people here (as well as myself) think these tutorials aren't very accurate. I thought they were great for starting out though. They give you a good walk through learning the basics of 6502. That's what I started out with.
EDIT: This should be in the Newbie Help Center, just for future reference.
Learning 6502 isn't the hardest thing in the world. Once you understand the basics (loading and storing, loops, subroutines, etc.) you have a lot to work with. After learning the basics you can study more in depth as you program. You can see exactly how everything works and have a better understanding. Though this comes with time.
If you're thinking of using Metroid as a ROM to hack and make Metroid 3, I'd say that you're going to find yourself rather stuck in a lot of places. Metroid I'm pretty sure only allows for 256 unique screens. I assume Super Metroid allows for a lot more. Also, it doesn't know how to handle a lot of the items you get in Super Metroid. You'd have to probably program in handling what exactly those items do.
Also, I was incredibly disappointed when I played Metroid one, because I'd played it after I'd played a lot of Super Metroid. The fight with Kraid is ABYSMAL! You'd probably want Kraid to be about two screens tall like he is in Super Metroid. I'm pretty sure that's not happening with Metroid one's engine. If you could prove me wrong, great. But I suggest that you learn how to program, as I learned how to program for the NES completely from scratch, because you'll find yourself able to get a lot further.
For some starting out tutorials:
www.freewebs.com/the_bott/gbaguy.zip
I don't know if this guy's tutorials are around on his site anymore, so a while back I saved them and uploaded them onto my site. Anyways, lots of people here (as well as myself) think these tutorials aren't very accurate. I thought they were great for starting out though. They give you a good walk through learning the basics of 6502. That's what I started out with.
EDIT: This should be in the Newbie Help Center, just for future reference.
Yes, the original Metroid's game engine is pure crap (in my opinion of course). The controls are terrible, and so are the levels which are confusing and all look the same. Super Metroid is really a whole bunch beter.If you're thinking of using Metroid as a ROM to hack and make Metroid 3, I'd say that you're going to find yourself rather stuck in a lot of places. Metroid I'm pretty sure only allows for 256 unique screens. I assume Super Metroid allows for a lot more. Also, it doesn't know how to handle a lot of the items you get in Super Metroid. You'd have to probably program in handling what exactly those items do.
Also, I was incredibly disappointed when I played Metroid one, because I'd played it after I'd played a lot of Super Metroid. The fight with Kraid is ABYSMAL! You'd probably want Kraid to be about two screens tall like he is in Super Metroid. I'm pretty sure that's not happening with Metroid one's engine. If you could prove me wrong, great. But I suggest that you learn how to program, as I learned how to program for the NES completely from scratch, because you'll find yourself able to get a lot further.
You should learn 6502 but that's not really enough, you'll also have to learn how to translate problems into algorithms that can be understood by the computer and that's really the hard part of programming (the rest is pretty easy in fact).
Useless, lumbering half-wits don't scare us.
In short, what they are saying is: "give up!"... Just kidding! Seriously though, it's pretty unrealistic for a newbie to think about making a game as complex as Metroid with no programming knowledge whatsoever.
The NES can be a pretty complicated beast, and it will require a lot of your time and dedication if you plan on mastering it. I don't mean to scare you off - if you feel like taking the challenge, by all means, stick around. But keep in mind that it will be a few years until one can go from knowing nothing to a (good) Metroid game.
Now, if your main goal is the game, and not the NES, there are plenty of point 'n click game making tools around that are newbie-friendly. Nothing stops you from using NES-like graphics and sounds with those tools, so you'll get a PC game that feels like a NES game. That's much more realistic if you just want to make the game right away.
The NES can be a pretty complicated beast, and it will require a lot of your time and dedication if you plan on mastering it. I don't mean to scare you off - if you feel like taking the challenge, by all means, stick around. But keep in mind that it will be a few years until one can go from knowing nothing to a (good) Metroid game.
Now, if your main goal is the game, and not the NES, there are plenty of point 'n click game making tools around that are newbie-friendly. Nothing stops you from using NES-like graphics and sounds with those tools, so you'll get a PC game that feels like a NES game. That's much more realistic if you just want to make the game right away.
Don't, I've always said and I'll always say never give up !In short, what they are saying is: "give up!"
Bah everyone was a newbie once, there is no way once should be discouraged by that. It sure takes a few years to get everything going, but nesdev is very fun no matter if you sucess or not so if you feel like it you should stuck here and not be discouraged by depressing posts by tokumaru.... Just kidding! Seriously though, it's pretty unrealistic for a newbie to think about making a game as complex as Metroid with no programming knowledge whatsoever.
Useless, lumbering half-wits don't scare us.
Hey! I said I wasn't trying to discourage him! That post may have come out all twisted (I'm a bit sleepy), but the main point of it was that it's a time of decision for him. There are 2 possible outcomes:
1. The NES is really important for him, so he chooses to stick around and work really hard to learn all the stuff he need to eventually (knowing it will take a while) be able to make the game he wants;
2. He just woke up one day thinking "hey, the NES is cool, let's see how easy it is to make a game for it" without any real intent of facing this seriously, in which case he'd be better off handling that urge to make a game in a point 'n click tool.
It could be either one. In case he decides to work hard for it, of course we'll be here to help out. I just felt it was important to point out that he won't have a working engine anytime soon, as there is just soooo much to learn before that.
It's a very long way from nothing to a decent game. After one grasps the basics of how to interact with the NES (moving sprites around the screen and so on) there is still a lot to learn about game design. Moving something based on screen coordinates is a long way from working with world coordinates, dynamic objects, collision, and many other complex things present in big (read: not single-screen puzzles) games. It takes a while to master all that, that's all.
1. The NES is really important for him, so he chooses to stick around and work really hard to learn all the stuff he need to eventually (knowing it will take a while) be able to make the game he wants;
2. He just woke up one day thinking "hey, the NES is cool, let's see how easy it is to make a game for it" without any real intent of facing this seriously, in which case he'd be better off handling that urge to make a game in a point 'n click tool.
It could be either one. In case he decides to work hard for it, of course we'll be here to help out. I just felt it was important to point out that he won't have a working engine anytime soon, as there is just soooo much to learn before that.
It's a very long way from nothing to a decent game. After one grasps the basics of how to interact with the NES (moving sprites around the screen and so on) there is still a lot to learn about game design. Moving something based on screen coordinates is a long way from working with world coordinates, dynamic objects, collision, and many other complex things present in big (read: not single-screen puzzles) games. It takes a while to master all that, that's all.
-
Celius
- Posts: 2159
- Joined: Sun Jun 05, 2005 2:04 pm
- Location: Minneapolis, Minnesota, United States
- Contact:
Bah, Tokumaru's posts are far from depressing. And notice the "Just Kidding" after "Give Up!". You should quote enough of what is said so it still has the same meaning.
It did take a few years for me to really get the hang of what I was doing, but that doesn't mean it has to. Maybe everything will click right away (Though it's not very likely). Some things are easier for other people to understand. Other people in my grade found math harder to understand than I did while I found it more difficult to analyze some of the stuff we read in English class. You might as well try your best to learn it.
But Tokumaru is right. If you want to make a NES game, start reading some 6502 docs and maybe skim through GBAGuy's tutorials (however inaccurate) and a few of the other tutorials around here. NESTech is a great reference for what the registers do and how everything works. But if you want to just make a NES-style game, and you really don't care if it runs on the NES or NES emulators, then use something like Game Maker or other point-and-click programs to make a game. But I'm assuming you want to make a NES game as you said you have PowerPak.
I'd say the hardest part about it all is learning the 6502. The NES's registers are fairly easy to understand once you know the proper programming language. GBAGuy's tutorials didn't help me as much with figuring out how everything on the NES works as much as it did help me understand the basics of the 6502, so I highly suggest you read it, but don't take it as 100% accurate.
It did take a few years for me to really get the hang of what I was doing, but that doesn't mean it has to. Maybe everything will click right away (Though it's not very likely). Some things are easier for other people to understand. Other people in my grade found math harder to understand than I did while I found it more difficult to analyze some of the stuff we read in English class. You might as well try your best to learn it.
But Tokumaru is right. If you want to make a NES game, start reading some 6502 docs and maybe skim through GBAGuy's tutorials (however inaccurate) and a few of the other tutorials around here. NESTech is a great reference for what the registers do and how everything works. But if you want to just make a NES-style game, and you really don't care if it runs on the NES or NES emulators, then use something like Game Maker or other point-and-click programs to make a game. But I'm assuming you want to make a NES game as you said you have PowerPak.
I'd say the hardest part about it all is learning the 6502. The NES's registers are fairly easy to understand once you know the proper programming language. GBAGuy's tutorials didn't help me as much with figuring out how everything on the NES works as much as it did help me understand the basics of the 6502, so I highly suggest you read it, but don't take it as 100% accurate.
Thanks Celius. I really didn't mean to discourage him. My first post did come out a little weird, it must be 'cause of the short night of sleep, like I said. I don't even like to use the word "newbie", because it sounds depreciative, but I couldn't think of anything better.
I'm not saying it's his case, but NESDEV does get it's share of ambitious people that soon vanish, so I guess I was kinda pushing him into making his decision right away. Maybe it wasn't fair to be so harsh.
eastbayarb, if you feel like hanging around here, do what these guys said. read a lot about the 6502 and the NES architecture. Read it over and over, and each time it should make a bit more sense. When you feel like you got a handful of questions, come back here and we'll do our best to answer them. After a few rounds of reading and asking, you should be ready to try making a few simple programs. By that time, you should start studying some game design topics, and eventually you'll know how to make the game.
I'm not saying it's his case, but NESDEV does get it's share of ambitious people that soon vanish, so I guess I was kinda pushing him into making his decision right away. Maybe it wasn't fair to be so harsh.
eastbayarb, if you feel like hanging around here, do what these guys said. read a lot about the 6502 and the NES architecture. Read it over and over, and each time it should make a bit more sense. When you feel like you got a handful of questions, come back here and we'll do our best to answer them. After a few rounds of reading and asking, you should be ready to try making a few simple programs. By that time, you should start studying some game design topics, and eventually you'll know how to make the game.
I had no programming skills starting out either. So that's what I always tell anyone, learn 6502 and also hex, decimal, and binary numbering. The NES itself is really simple (with it's little quirks, anyone here can help you with those).
The main thing is learning 6502, starting at it. Then it's not hard (it only takes practice) to master it, and you'll be able to overcome any programming/design problem you can think of.
The main thing is learning 6502, starting at it. Then it's not hard (it only takes practice) to master it, and you'll be able to overcome any programming/design problem you can think of.
The real test is just how badly you want to make your NES game. If you are really serious, you will learn and succeed. Otherwise you'll just move onto something else.
I would recommend getting programming experience before trying to make a NES game for sure. I really think developing something for your PC using C or C++ is a better start to game programming than trying to program a NES game.
I would recommend getting programming experience before trying to make a NES game for sure. I really think developing something for your PC using C or C++ is a better start to game programming than trying to program a NES game.
Hi!
Sorry for abusing this thread.
I just wanted to stop by and say hello!
Hello!
Okay, i read some threads here and although I don't unterstand the most of it, I find it really interesting.
developing for the NES is very appealing for me, though I am a total noob in that field.
i have some basic qbasic programming experiences and i did a little bit Java and Pascal programming, but that's it.
At the moment I have no time for hobby like this, but I will download some documents and read them in the bus or subway to get into the topic.
Hopefully I'll get to start programming soon^^
Okay, I will keep on lurking, you seem to have a nice and active community, that's great!
Bye!
Sorry for abusing this thread.
I just wanted to stop by and say hello!
Hello!
Okay, i read some threads here and although I don't unterstand the most of it, I find it really interesting.
developing for the NES is very appealing for me, though I am a total noob in that field.
i have some basic qbasic programming experiences and i did a little bit Java and Pascal programming, but that's it.
At the moment I have no time for hobby like this, but I will download some documents and read them in the bus or subway to get into the topic.
Hopefully I'll get to start programming soon^^
Okay, I will keep on lurking, you seem to have a nice and active community, that's great!
Bye!
-
ironfist61
- Posts: 144
- Joined: Fri Oct 24, 2008 1:25 pm
One post? "BYE"? What's going on???Dirk wrote:Hi!...Bye!
Oh well, That's kinda how I was. Over the past few years or so I was an unregistered freak browsing these forums every few months. I finally registered a few weeks back though. I wish I did register.
Just a question here for everyone. I know your answers will vary but I'll ask anyway. (This may result in a split)
How did you learn to develop for the NES, What was your motivation and what background/experience did you have before choosing to pursue in this stuff?
My very first start was modifying code from old (and probably inaccurate) demos/tutorials to show my own graphics. I also tried some of the PPU features (such as scrolling) in a pretty random manner. I didn't really understood how assembly worked, so it was mostly trial and error. I'd probably freak out if I saw those programs today.ironfist61 wrote:How did you learn to develop for the NES
Then, after the first couple of crappy programs, I started reading like there was no tomorrow. PPU and 6502 docs in the vein, all day long. I read the same documents probably some 20~30 times, until they made sense. By that time I was already reading these boards, and taking notes of whatever seemed important. I used the 6502 simulator to test my knowledge of assembly, and started making ROMs again (after a year or so) to test my knowledge of the NES. This time I actually knew what I was doing.
I always like making games, but never found the ideal platform for that. For years I used QBasic, but never finished a game. When emulators became popular, I started trying the systems I never owned, and I fell in love with the NES. I loved to use Nesticle's debugging features to take the games apart and see how the graphics were made. Then I started drawing lots of NES-like graphics, and soon realized I'd like to actually program for it.What was your motivation
I used QBasic, and had recently learned some Pascal, Delphi and VB in high school. I dissected many games back in the days of QBasic, and that's where I started learning about the mechanics of games. Today I keed reading about interesting algorithms and new ways to do things.what background/experience did you have before choosing to pursue in this stuff?