by DST » Tue Nov 10, 2009 2:43 am
The differences between NES games and todays games:
1. Sprite Rules. The nes used very small sprites, which had to stay inside very strict guidelines. Mario was very very 'square'. There wasn't much change between running mario and still mario, size-wise. This sounds unimportant, but its not. This is why mario had such great collision/reaction control. They allowed for very little artistic freedom, and games that went outside these guidelines had very poor collision/response. Try Rygar or Strider to see what i mean.
2. Color rules. The nes only allowed 3 colors per sprite. (3+transparent). This means sprites were much much more difficult to design, as mario needed several sprites to make the entire character. Colors had to be designated on each sprite, for instance, if a blue actor had a red hat, the hat sprite had to load a different color palette.
Same goes for tiles....3 colors each, and an entirely new 3 color palette for each one that had any other colors. Make the comparison for yourself...we can have millions of colors in ONE sprite, they had....3. Also, no antialiasing. Binary transparency only.
What points 1 and 2 mean is designing one animation for a character was an all day job, whereas we often do it in 5 minutes. That's the price of the super-efficiency the machines had.
3.Assembly. (i think that's what they used). This means they could break apart a byte and use it as they wanted. Somewhere here i have a post about that, and everyone told me i was full of it, and in modern systems, i am. A byte takes up even more cpu than an int nowdays, because 32 bit systems use a mangled int when trying to use only one byte.
What i mean is, if you have one byte, that's 8 bits, and bit 1 is canjump, bit 2 is big/small, bit 3 is fireflower/invincible, bit 4 is running/walking, etc. etc. we can describe mario in one byte!
In GE however, we'll use one 32 bit int to describe canjump alone!
This is true for most of how their script worked. It was exponentially simpler and smaller than what we use. It was probably exponentially more difficult to program as well.
5. Sound? ha. We commonly use a single .wav sample the size of an entire NES cartridge! And games like star wars, blades of steel, etc. that did use sound samples often had to put in extra memory just for those samples, which were very, very low quality.
6. Rules. That's what it all comes down to. They had to program by a specific set of rules. There wasn't much freedom, either artistically or in the design of workflow. You couldn't just load an actor and change animations when you wanted, because loading all those animations would take up too much memory. Instead. it would have to load all the necessary graphics for the level you're on, and dump them at the end so it could reload the next set. Most games had 1 or 2 fonts at the most. And you couldn't resize them.
You also couldn't choose the timing as you wanted - how many ms of delay you could have in a timer wasn't free like it is. It had to work within the timing of the machine. Notice how to prevent mass collision calculations, most games had your character get knocked BACK when hit, and temp invincibility. This was to prevent collisions for a second while it did the other work.
Same thing with enemy collisions....enemies never hurt each other, this would take too much cpu. And you never hurt enemies with touch alone,...it was either you or them. Mario could have two fireballs + his feet to attack at once. That's a maximum of 4 collisions at any given time! (2 fireballs + feet + hurt collision).
Contra limited the spreadshot bands to what was it...5 per wave? That's 7 max collisions at once (if you were shooting a big boss, feet on the ground, and you got shot at the same moment). Enemies had 'hearts' to shoot at....so most collisions wouldn't hit anything, and most of the actual collisions would involve only the heart actor.
Rules. It's all about rules. They were very good at hiding those rules, its true, but they had to abide by them. Trust me on this one...its hard enough making games with modern, easy rules. You wouldn't want to make games the way they had to!
Not only because of the amount of work involved, but because of the incredibly tight design limitations. There really wasn't much variation from one game to the next in the actual engine. Making something unique and explorative....was hard.
Last edited by
DST on Tue Nov 10, 2009 2:45 am, edited 1 time in total.