Alright, well, then it's Assembly.
Gradualore wrote:
So if that's the reason you're interested in it, I'd say go for it. Assembly isn't all that hard, especially if you do know C and are familiar with pointers and such. Beyond that, you will need to learn hex and binary number systems, bitwise operations, and 2's complement math is useful as well.
Those things are absolutely no problem to me. I never had problems with pointers. And I know binary, hexadecimal, bitwise operations and the two's complement quite well.
Now I have two more questions that I need to know in advance:
1. What's the best tutorial to read? I found a lot tutorials that teach you how to program the NES, but what is the best, the most complete and the most comprehensive one?
2. When I program an NES game, do I have to know how the game shall look like from the beginning? I mean, when I program with C++ or any other high level language, I can start making a game without actually knowing what the game will be like at all.
At first I start with general graphic stuff: Creating an image class, giving it methods to load a bitmap, to write its bitmap or a part of it to the back buffer with or without transparent background, to write the back buffer to the screen etc. (DirectX is not that convenient here, so a bit of selfmade encapsulation is necessary.)
Then I will create a level class on the logic side. (Like, a level internally consists of a two-dimensional array when the game has a top-down perspective.)
Then I will make the graphic part capable of diplaying the level that is represented on the logic part. (I still have no idea what the game will be about.)
Then I program a movable character class and let the graphic part display any characters in the levels too.
Then I can slowly think of what the game shall actually do. I derive classes from the character class so that I have a player class whose objects receive manual input and an opponent class whose objects move according to a certain pattern.
Then I can evaluate the game situation and make the game react to enemy touch (loss of energy or the loss of a life with the reset of the level), reaching the exit (loading of the next level) etc.
So, as you see, I can spend a huge time with programming the basic stuff and I still don't need to worry yet if the game shall become a "Pac-Man" or a "Zelda" or a top-down car race. I can decide that later and don't need to rewrite existing code, just add new stuff accordingly.
Is that also possible with NES programming? Or do I have to know exactly what I want the game to be since later changes would require a huge rewrite of the code?