How did they make Sonic?

Forum for the creative side of the game development process: art, music, storyline, gameplay, concepts, etc. Any sort of relevant discussion is welcome here.

Moderator: PC Supremacists

User avatar
BlueMonkey5
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 86
Joined: Fri Feb 20, 2009 12:54 am

How did they make Sonic?

Post by BlueMonkey5 »

I wasn't sure where to put this topic or what category it would fall in, BUT... does anyone know how they made the original Sonic the Hedgehog, or the other similar games of it's time? I'm racking my brains trying to find information about this. What graphics program did they use to make Sonic and the backgrounds... how did they animate him... did they use C++ and PC, etc?

Ifanyone has any information about this, it would be greatly appreciated.
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: How did they make Sonic?

Post by Falco Girgis »

They used pure assembly for the Genesis. Whatever flavor the Genesis's 7 mhz processor had. I believe it was Z80. And those sprites are a lot more primitive than just bitmapped files. They have paletted graphics on most everything pre-32bit generation as far as consoles are concerned.
User avatar
Frosty
Chaos Rift Newbie
Chaos Rift Newbie
Posts: 10
Joined: Sat Feb 21, 2009 5:51 pm
Favorite Gaming Platforms: Xbox 360, Playstation 3
Programming Language of Choice: C++
Location: New York
Contact:

Re: How did they make Sonic?

Post by Frosty »

ASM (Assembly) Most likely
User avatar
MadPumpkin
Chaos Rift Maniac
Chaos Rift Maniac
Posts: 484
Joined: Fri Feb 13, 2009 4:48 pm
Current Project: Octopia
Favorite Gaming Platforms: PS1-3, Genesis, Dreamcast, SNES, PC
Programming Language of Choice: C/++,Java,Py,LUA,XML
Location: C:\\United States of America\Utah\West Valley City\Neighborhood\House\Computer Desk

Re: How did they make Sonic?

Post by MadPumpkin »

Assembly
thats why its so good
Last edited by MadPumpkin on Wed Jun 03, 2009 3:49 am, edited 1 time in total.
While Jesus equipped with angels, the Devil's equipped with cops
For God so loved the world that he blessed the thugs with rock
Image
Image
Image
User avatar
ibly31
Chaos Rift Junior
Chaos Rift Junior
Posts: 312
Joined: Thu Feb 19, 2009 8:47 pm
Current Project: Like... seven different ones
Favorite Gaming Platforms: Xbox 360, Gamecube
Programming Language of Choice: C++, ObjC
Location: New Jersey.

Re: How did they make Sonic?

Post by ibly31 »

If they did make it using Z80 assembly, then that would be neat, because I could probably program for that console!
Image
Twitter
Website/Tumblr
My Projects

The best thing about UDP jokes is that I don’t care if you get them or not.
User avatar
BlueMonkey5
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 86
Joined: Fri Feb 20, 2009 12:54 am

Re: How did they make Sonic?

Post by BlueMonkey5 »

I have no clue what anyone's talking about, but it sounds awesome!! First off, it would be great to hear about some of the game physics,

and I must REALLY be a beginner because I have no idea what ASM (Assembly) is, what Z80 assembly is, or what paletted graphics are (opposed to bitmapped files); what's that mean? So if anyone can elaborate...

Anyway, what I'm gettin at is I'd really love to make a game that captures the look and feel of the old side scrollers... but I guess trying to make it using the same exact methods they did back then would be pretty stupid?? So the question is how do you make a game now that looks the exact same way they did back then? I'm assuming it's all in the hands of the graphics artist.

If that seems strange, to me its like music. Some people like the old warm sounds of songs recorded in analog, while many prefer the high quality of digital.
User avatar
ismetteren
Chaos Rift Junior
Chaos Rift Junior
Posts: 276
Joined: Mon Jul 21, 2008 4:13 pm

Re: How did they make Sonic?

Post by ismetteren »

BlueMonkey5 wrote:and I must REALLY be a beginner because I have no idea what ASM (Assembly) is, what Z80 assembly is, or what paletted graphics are (opposed to bitmapped files); what's that mean? So if anyone can elaborate...
Im am not the right person for explaining what ASM is, but i will try to explain what paletted graphics are.

Paletted graphics ARE bitmaps, but they often has a very low bit depth. Because of this, instead of trying to get as many different colors as possible, you define a palette, whic you can take colors from. So for exampel, you could have very many shades of blue, but not that many of red. In a 32 bit bitmap, you wouldent do that, because you can have very many shades of every color.

Atleat, that is the way i have understood it. ;)
Image ImageImage Image
User avatar
BlueMonkey5
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 86
Joined: Fri Feb 20, 2009 12:54 am

Re: How did they make Sonic?

Post by BlueMonkey5 »

Dam, so it sounds like a 32 bit bitmap is just an all around easier and better way of doing the same thing. And I guess ASM is quite a mystery... who can solve it!!?
User avatar
MarauderIIC
Respected Programmer
Respected Programmer
Posts: 3406
Joined: Sat Jul 10, 2004 3:05 pm
Location: Maryland, USA

Re: How did they make Sonic?

Post by MarauderIIC »

The problem with non-paletted graphics is that the image is a lot larger. Say for a particular shade of red, the colors are 255, 10, 20. Then you have to store 255, 10, 20. But say you have a palette that you use for all your graphics and that particular shade of red is #5. Then you store 5. After a certain point it becomes easier to store the individual colors instead of a palette index, but paletted graphics are much, MUCH smaller.
I realized the moment I fell into the fissure that the book would not be destroyed as I had planned.
User avatar
programmerinprogress
Chaos Rift Devotee
Chaos Rift Devotee
Posts: 632
Joined: Wed Oct 29, 2008 7:31 am
Current Project: some crazy stuff, i'll tell soon :-)
Favorite Gaming Platforms: PC
Programming Language of Choice: C++!
Location: The UK
Contact:

Re: How did they make Sonic?

Post by programmerinprogress »

since no one answered the ASM question, I can give a short summary of what I understand...

ASM (or Assembly Instructions) are sets of mnemonics(or symbols which are an aid to the memory) which are used to directly program the processor of a computer.

in the old days, people used to flick switches to program their computers, they used to enter a number by flicking switches on their little 8-bit machine, and then flick a further set of switches to tell the computer where to put the data...

This was ok for very simple programs, but soon drove computer programmers to insanity, thus assembly was born!

In short, instead of commanding the CPU to "move the numnber 4 into register 2" using a command like 011101 011110 011111, you could use symbols called mnemonics which could substitute these complicated binary instructions, so 101010101101 becomes MOV R2, #04 (this would be an example of RISC assembly, you are 'Moving' the number 4 into register 2)

As time went on, higher-level languages were developed (such as BASIC and C), but people still use ASM occasionally (used to be very useful if you wanted to get the most out of console hardware I believe)

I hope this wasn't too long winded and actually answered the question ;)
---------------------------------------------------------------------------------------
I think I can program pretty well, it's my compiler that needs convincing!
---------------------------------------------------------------------------------------
And now a joke to lighten to mood :D

I wander what programming language anakin skywalker used to program C3-PO's AI back on tatooine? my guess is Jawa :P
User avatar
wtetzner
Chaos Rift Regular
Chaos Rift Regular
Posts: 159
Joined: Wed Feb 18, 2009 6:43 pm
Current Project: waterbear, GBA game + editor
Favorite Gaming Platforms: Game Boy Advance
Programming Language of Choice: OCaml
Location: TX
Contact:

Re: How did they make Sonic?

Post by wtetzner »

Assembly is basically a human readable representation of machine code. It's like any other programming language, except that instead of compiling higher-level constructs (for loops, if-else statements, etc.) to machine code, assembly instructions more or less map directly to the instruction set of the processor.

For example, in C++, you might write a loop like this:

Code: Select all

for(int i = 0; i < 1000000000; i++)
{
        // do whatever
}
In assembly, you might do something like this:

Code: Select all

        mov rax, 0   ; Move the value "0" into the rax register
L1:     cmp rax, 1000000000  ; Compare the rax register with 1000000000
        jae END ; If rax is above or equal to 1000000000, jump to label END
        ; do whatever
        inc rax ; increment rax by one
        jmp L1 ; Jump back to label L1
END: ; End of loop
The assembler (in this case NASM) converts the labels (L1 and END) into memory locations.

In the C++ version, you're using an int (i) which is on the stack, whereas in the assembly version, you're using a register, but it's the same idea. You could use a memory location in the assembly version too, but it's more work to type :P.

Also, this is x86_64 assembly, not Z80. I don't know Z80 assembly.

Most C/C++ compilers compile to assembly first, and the use an assembler to convert the assembly to machine code.

Oh, and I used 1000000000, because I couldn't tell if it was looping on my computer if it was a smaller number. My computer's too fast :).

EDIT: Apparently I type too slow. programmerinprogress beat me to it. :)
The novice realizes that the difference between code and data is trivial. The expert realizes that all code is data. And the true master realizes that all data is code.
User avatar
BlueMonkey5
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 86
Joined: Fri Feb 20, 2009 12:54 am

Re: How did they make Sonic?

Post by BlueMonkey5 »

Wow, that all sounds really confusing, but thank you all for the input. It is very informative, helpful and good to know.

After just a few days in the forum's, I've learned that I'm not meant to be a programmer :) I think I'm just going to stick to game design and graphic art. My challenge as of now is how to make a game that looks and feels like the classics, and I think that I'm just going to have to find the right graphics program to achieve this affect. If anyone wants to help out, just let me know. Thanks again.
User avatar
ibly31
Chaos Rift Junior
Chaos Rift Junior
Posts: 312
Joined: Thu Feb 19, 2009 8:47 pm
Current Project: Like... seven different ones
Favorite Gaming Platforms: Xbox 360, Gamecube
Programming Language of Choice: C++, ObjC
Location: New Jersey.

Re: How did they make Sonic?

Post by ibly31 »

Assembly isn't actually that hard. I mean, I wouldn't start it as your first language, but all there really is to it is to learn the Registers, in my case(A,B,HL,DE,BC, etc...), and learn how to do loops with DJNZ, and learn the processor calls, for TI84 ASM, b_call(_processorCall).
Image
Twitter
Website/Tumblr
My Projects

The best thing about UDP jokes is that I don’t care if you get them or not.
User avatar
BlueMonkey5
Chaos Rift Cool Newbie
Chaos Rift Cool Newbie
Posts: 86
Joined: Fri Feb 20, 2009 12:54 am

Re: How did they make Sonic?

Post by BlueMonkey5 »

Oh... well sounds like you know your stuff. maybe one day we can collaborate if you feel like doing a project. It would be nice to have someone who can program Sega Genesis style.
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Re: How did they make Sonic?

Post by Falco Girgis »

ibly31 wrote:Assembly isn't actually that hard. I mean, I wouldn't start it as your first language, but all there really is to it is to learn the Registers, in my case(A,B,HL,DE,BC, etc...), and learn how to do loops with DJNZ, and learn the processor calls, for TI84 ASM, b_call(_processorCall).
Sure, the syntax and semantics of learning an assembly language is not dificult, but doing anything even remotely useful or nontrivial is horrendous in comparison to a higher level language.
Post Reply