How did they make Sonic?
Moderator: PC Supremacists
- BlueMonkey5
- Chaos Rift Cool Newbie
- Posts: 86
- Joined: Fri Feb 20, 2009 12:54 am
How did they make Sonic?
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.
Ifanyone has any information about this, it would be greatly appreciated.
- Falco Girgis
- 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?
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.
- Frosty
- 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?
ASM (Assembly) Most likely
- MadPumpkin
- 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?
Assembly
thats why its so good
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
For God so loved the world that he blessed the thugs with rock
- ibly31
- 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?
If they did make it using Z80 assembly, then that would be neat, because I could probably program for that console!
Website/Tumblr
My Projects
The best thing about UDP jokes is that I don’t care if you get them or not.
- BlueMonkey5
- Chaos Rift Cool Newbie
- Posts: 86
- Joined: Fri Feb 20, 2009 12:54 am
Re: How did they make Sonic?
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.
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.
- ismetteren
- Chaos Rift Junior
- Posts: 276
- Joined: Mon Jul 21, 2008 4:13 pm
Re: How did they make Sonic?
Im am not the right person for explaining what ASM is, but i will try to explain what paletted graphics are.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...
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.
- BlueMonkey5
- Chaos Rift Cool Newbie
- Posts: 86
- Joined: Fri Feb 20, 2009 12:54 am
Re: How did they make Sonic?
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!!?
- MarauderIIC
- Respected Programmer
- Posts: 3406
- Joined: Sat Jul 10, 2004 3:05 pm
- Location: Maryland, USA
Re: How did they make Sonic?
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.
- programmerinprogress
- 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?
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
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
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
- wtetzner
- 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?
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:
In assembly, you might do something like this:
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.
For example, in C++, you might write a loop like this:
Code: Select all
for(int i = 0; i < 1000000000; i++)
{
// do whatever
}
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
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.
- BlueMonkey5
- Chaos Rift Cool Newbie
- Posts: 86
- Joined: Fri Feb 20, 2009 12:54 am
Re: How did they make Sonic?
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.
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.
- ibly31
- 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?
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).
Website/Tumblr
My Projects
The best thing about UDP jokes is that I don’t care if you get them or not.
- BlueMonkey5
- Chaos Rift Cool Newbie
- Posts: 86
- Joined: Fri Feb 20, 2009 12:54 am
Re: How did they make Sonic?
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.
- Falco Girgis
- 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?
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.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).