About programming...

Magician Type 0

Mechanical humanoid
Hey guys. I'm not new to the world of emulators. I've had about 4 or 5 years using them. I've decided recently to set a large goal, possibly one that some people would think is too large, but I digress. I'm looking to learn how to program because I want to take a crack at making a Sega model 3 emulator. I've seen very few people even try (or at least try publicly) and since arcade games are my very favorite, I want to try myself. After doing a little research, I've found that most people say basic C++ language is enough to know how to make an emulator, so getting to the point, can someone maybe help point me in the right direction? And if there is another language or different language that would help further, tell me. I'm new to the concept of programming, so if I sound like a n00b, it's because I am one. Thanx.
 

Zach

New member
Just some advice..

In addition to knowing a language, you are going to need to understand the architecture you are trying to emulate.. You have to learn about all the major CPUs involved, registers, opcodes, memory addresses, all that boring Computer Science shit people learn in college.

And you'll have to do it all via reverse engineering to keep the project legal.

That being said.. I don't think anyone here really knows much about programming or that kind of stuff. This is primarily an information community and we don't have any real technically inclined people around, beyond the general PC type problems.

Take a look at some books, C++ for dummies or something like that. There are also people writing emulators in Delphi, but I don't know about really advanced systems.
 

FatTrucker

Abusus non tollit usum
Then of course you need to be able to actually crack and understand the encryption on the hardware you are going to emulate.

This seems to be the biggest obstacle for emulator authors who want to take on newer systems because the encryption on modern systems is so advanced.

To take MameDev as an example you have dozens of talented programmers working on the project and they've only just managed to crack CPSIII.

To get an idea, take a look at the Mame source code.
 
Last edited:

Magician Type 0

Mechanical humanoid
Just some advice..

In addition to knowing a language, you are going to need to understand the architecture you are trying to emulate.. You have to learn about all the major CPUs involved, registers, opcodes, memory addresses, all that boring Computer Science shit people learn in college.

And you'll have to do it all via reverse engineering to keep the project legal.

That being said.. I don't think anyone here really knows much about programming or that kind of stuff. This is primarily an information community and we don't have any real technically inclined people around, beyond the general PC type problems.

Take a look at some books, C++ for dummies or something like that. There are also people writing emulators in Delphi, but I don't know about really advanced systems.

Thank you for the advice. Firstly (here comes the n00bishness) does that mean that I have to learn all of this in college? Or it's just helpful to do so. Also, what do you mean by reverse engineering?

If this isn't the place you'd recommend to ask for help with said things, would you recommend a site that maybe could?

Thanks again for the help!

Then of course you need to be able to actually crack and understand the encryption on the hardware you are going to emulate.

This seems to be the biggest obstacle for emulator authors who want to take on newer systems because the encryption on modern systems is so advanced.

To take MameDev as an example you have dozens of talented programmers working on the project and they've only just managed to crack CPSIII.

To get an idea, take a look at the Mame source code.

Ok, I've heard of encryptions. How do they play into emulators? And also, what exactly are they? Does it serve the same purpose as a lock (as in, does it prevent replication?) or something else that I'm not thinking of? If this is the biggest obsticle for emulator makers out there, It'll be helpful to know.

Thanks again guys!
 

FatTrucker

Abusus non tollit usum
Encryption is basically where the underlying code is scrambled into unintelligible nonsense that cannot be read or understood by man or machine. The encryption will have a key which addresses the code in a certain way and makes it logical again. If you don't have access to the keys you have to break the encryption and find out how to unscramble it. Its a bit more complex than that but thats broadly what it is and how it works.

Basically you need a broad and extensive knowledge of systems, architecture, data encryption, and programming languages to think about emulating modern systems.

In order to emulate a system you need all the skills to understand how that system works, how the chips work, how they talk to each other, what they say, in what order, how they handle video and audio signals....everything. Reverse engineering is achieved by using your understanding of systems to work out what its doing. Someone designs a chip and works out how to use it. To reverse engineer you see what the chip does and work out how it was designed.

The programming language part only really comes into play when you understand the inner workings of a system and then translate it into code to allow Windows to replicate the system.

Basically its a massive undertaking that will take years of study to achieve on your own. Which is why so many emulators are team efforts with different authors undertaking different tasks dependent on their area of expertise and experience.

By all means give it a shot if you are dedicated and keen, but its a drastically long shot if you have no experience or education in Computer Science and programming. Its not something you can learn from reading websites and FAQ's, it takes years of training and practice.
 
Last edited:

Magician Type 0

Mechanical humanoid
Thanks for the info Fat Trucker! I really had no idea how complicated the process is. So this is like a career sort of thing? As in, you basically need a degree to create an emulator? If so, I'll keep that in mind. I am fairly dedicated to trying, although if it takes years, I'm sure someone out there will finish it before I even learn how to start!

BTW, you're pretty intellegent with all of this? Are you a programmer? Just wondering.

Thx again.
 

Zach

New member
Pretty much sums it up.. And just to reiterate the importance on reverse engineering..

R/E is pretty much what FT said it is. The reason it is legal is because a successfully reverse engineered project will do everything the original hardware does, but contains absolutely NO design aspects from that actual hardware.

BIOS code, special hardware technologies, etc are all copyrighted stuff, thus illegal to copy (just like roms off the 'net). However there is nothing stopping someone from creating a clone of the original to do what the original does. This is why we have so many brand name TV's, VCR's, every day appliances, etc. Fundamentally they all operate the same.

The key to successful reverse engineering is often to use "virgin engineers". People who have had no access to, or knowledge of the original work being copied. That way you can't accidentally copy someones technology, unless by pure chance you come up with the exact same idea for doing something.

It is a very complex and expensive project. Often involving TEAMS of people concentrating on specific areas of function instead of the whole machine. It costs companies millions to reverse engineer stuff. I believe the first IBM PC clone was a million dollar project, and that was back before economic inflation in the US set in.

Also, I don't know any good forums or other information sources to point you to, as I know as much about this stuff as anyone else. But you are in for years of effort in the long-haul if you really want to do this to any realistic degree
 
Last edited:

Magician Type 0

Mechanical humanoid
I see. Actually, that does tell me something. Is it possible that someone has created Sega model 3 emulators, but didn't reverse engineer, so they didn't go public? And if so (I hope I don't get booted for this) is it possible for me to do so? That was really just a thought. A wonder. Anyway, I see where this is going, and I understand. It makes me wonder why people feel so inclined to make emulators for the public. If it takes up so much time and money, why just release it for free? I know they can't sell it, but just releasing it to the public after spending all that time and money, why? Also just a thought.

I'm still going to take a look at programming stuff. You guys definately know more about this stuff than I do, but I'll try to make one anyway. And if I can reverse engineer it (however that's possible) I'll do it.

Thanks for all your help Zach and FT. If anyone else has any advice or info, contribute!
 

Zach

New member
It's about preservation mainly. And to see if something can be done.

It's quite possible to use shortcuts and make emulators based on copyrighted stuff, but then it WOULD be pointless to release it.
 

Magician Type 0

Mechanical humanoid
Real quick, if you have any idea, where might I do some reading on arcade technology? Are there any websites or books written about them (Sega model 3 in particular)?
 

Zach

New member
I definitely have no idea..

I think the way they study stuff like that is to get their hands on an actual game/system board
 

Epsi

Zoo Keeper
I'm a programer. It takes about 6 months to learn your first "coding language". I recomend C# to start with.
 

Epsi

Zoo Keeper
no. I mean C#, also known as C Sharp. Its one of the easier ones to learn. C++ is very hard to learn, so dont start with that. just my personal experience
 
Top