Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

How did development of the Super Nintendo and Sega Genesis go


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 bigbadbear9885   Members   -  Reputation: 142

Like
0Likes
Like

Posted 12 March 2011 - 11:27 PM

How did people develop games for tthe Super Nintendo and Sega Genesis? were there Game Engines? Did they have to straight up program? Most of all were there Sprite editors to make the sprites and backgrouds???

Sponsor:

#2 Ravyne   Members   -  Reputation: 2758

Like
1Likes
Like

Posted 14 March 2011 - 11:21 AM

It wasn't all that different than nowadays really, except that a lot less was done for you -- for example, there wasn't anything like an OS to speak of, in the way that an Xbox/360, Gamecube/Wii or PS2/3 have an OS. What the old consoles had, if anything at all, resembled more of a BIOS than anything else.

You were on the bare metal, as they say, instead of calling a library function to draw a sprite, you'd write to a special area of memory that the GPU would look in to find out about each sprite it was supposed to draw. Basically each piece of hardware had its own area of memory, and in that memory was a table describing how the hardware was to act or what data is was to act upon -- so you'd manipulate those tables to get the desired graphics or sound effect. This is exactly the way that, really, all processors/computers work -- its just that the operating system hides all that from us today, and takes care of these low-level details for us. If you work in small, embedded systems, you still work in the old ways -- if you've ever played with a PIC or AVR microcontroller (or indeed, any other microcontroller) then you've already done this style of programming. The NES and SNES were pretty strictly an ASM-affair (macro assemblers were about as good as it got). The genesis could be programmed in C since there were enough registers to go around, but anything speed-critical had to be written in assembler, and it was most common to just write the whole thing in assembler since you needed basically all the juice you could get anyhow.

As to engines -- not typically formally, and certainly not anything resembling the middle-ware engines we have today. Each studio might have its own loose collection of functionality scraped together, parhaps this code was shared amongst other studios with the publisher, but you certainly couldn't go out an purchase a turn-key solution.

Sprites and backgrounds were made in the art tools of the day. A package called DeluxePaint was popular back then (a modern successor is Cosmigo's ProMotion). Artists had to understand the hardware limitations and couldn't just paint freely with any color because each sprite might only get 16 or even 4 colors, with one of those colors reserved for transparency. If you absolutely needed more color, sprites could be layered, or large sprites could be composed out of pieces with different palettes, but that would eat into your sprite budget because the old systems had hard limits on the number of sprites that could be rendered -- perhaps 64 8x8 sprites on-screen at once, with no more than 10 on a single scan-line (IIRC, those are the numbers for the NES). You could do clever tricks like palette animation, or changing the palette between scan-lines to get more colors or other graphics effects.

One of these days, I'm going to get around to writing my "virtual console" -- basically it is a library for retro games which can be programmed in C or C++, but which has an interface and hard limitations like an old console, so you would have to employ all the same techniques and clever tricks that NES and SNES programmers did. I think it would be really interesting to see what people would come up with -- basically most of the fun of homebrew (less being able to play on real hardware) without the headache of setting up cross-compilers and bintools, and with full, accurate, official documentation.

#3 Icebone1000   Members   -  Reputation: 404

Like
0Likes
Like

Posted 04 April 2011 - 03:16 PM

It wasn't all that different than nowadays really, except that a lot less was done for you -- for example, there wasn't anything like an OS to speak of, in the way that an Xbox/360, Gamecube/Wii or PS2/3 have an OS. What the old consoles had, if anything at all, resembled more of a BIOS than anything else.

You were on the bare metal, as they say, instead of calling a library function to draw a sprite, you'd write to a special area of memory that the GPU would look in to find out about each sprite it was supposed to draw. Basically each piece of hardware had its own area of memory, and in that memory was a table describing how the hardware was to act or what data is was to act upon -- so you'd manipulate those tables to get the desired graphics or sound effect. This is exactly the way that, really, all processors/computers work -- its just that the operating system hides all that from us today, and takes care of these low-level details for us. If you work in small, embedded systems, you still work in the old ways -- if you've ever played with a PIC or AVR microcontroller (or indeed, any other microcontroller) then you've already done this style of programming. The NES and SNES were pretty strictly an ASM-affair (macro assemblers were about as good as it got). The genesis could be programmed in C since there were enough registers to go around, but anything speed-critical had to be written in assembler, and it was most common to just write the whole thing in assembler since you needed basically all the juice you could get anyhow.

As to engines -- not typically formally, and certainly not anything resembling the middle-ware engines we have today. Each studio might have its own loose collection of functionality scraped together, parhaps this code was shared amongst other studios with the publisher, but you certainly couldn't go out an purchase a turn-key solution.

Sprites and backgrounds were made in the art tools of the day. A package called DeluxePaint was popular back then (a modern successor is Cosmigo's ProMotion). Artists had to understand the hardware limitations and couldn't just paint freely with any color because each sprite might only get 16 or even 4 colors, with one of those colors reserved for transparency. If you absolutely needed more color, sprites could be layered, or large sprites could be composed out of pieces with different palettes, but that would eat into your sprite budget because the old systems had hard limits on the number of sprites that could be rendered -- perhaps 64 8x8 sprites on-screen at once, with no more than 10 on a single scan-line (IIRC, those are the numbers for the NES). You could do clever tricks like palette animation, or changing the palette between scan-lines to get more colors or other graphics effects.

One of these days, I'm going to get around to writing my "virtual console" -- basically it is a library for retro games which can be programmed in C or C++, but which has an interface and hard limitations like an old console, so you would have to employ all the same techniques and clever tricks that NES and SNES programmers did. I think it would be really interesting to see what people would come up with -- basically most of the fun of homebrew (less being able to play on real hardware) without the headache of setting up cross-compilers and bintools, and with full, accurate, official documentation.

Hey, did you work on some titles for those consoles? Could you share more on that? Like how much time to finish a game, or how Nintendo allowed developers to develop for their system(since was all new, most developers didnt have a name yet, did they?)..Thats awsome info!




#4 tykel   Members   -  Reputation: 100

Like
0Likes
Like

Posted 07 June 2011 - 08:55 AM

How did people develop games for tthe Super Nintendo and Sega Genesis? were there Game Engines? Did they have to straight up program? Most of all were there Sprite editors to make the sprites and backgrouds???

As Ravyne said, back in those days C compilers were immature if they existed for the platform (not a given), and hardware restrictions made anything but assembler an unacceptable overhead.
If you are interested to see what the source code to a real SNES game looks like, search for "B.O.B. source code" - its source somehow made its way to the internet.

One of these days, I'm going to get around to writing my "virtual console" -- basically it is a library for retro games which can be programmed in C or C++, but which has an interface and hard limitations like an old console, so you would have to employ all the same techniques and clever tricks that NES and SNES programmers did. I think it would be really interesting to see what people would come up with -- basically most of the fun of homebrew (less being able to play on real hardware) without the headache of setting up cross-compilers and bintools, and with full, accurate, official documentation.

Yeah, that's a cool idea. Alternatively systems like the Chip16 and Chip8 are available, the latter being the best-known.

Cheers,




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS