Home | Forums | What's new | Resources | |
Own emulator project, need alot of help! |
AngelBass - Aug 18, 2002 |
1 | 2 | Next> |
ExCyber | Aug 18, 2002 | |||||||
You do not want to try to tackle the Atari (assuming you mean the 2600). It's hard enough just to program anything for it, let alone emulate it properly. In fact, the rest of those systems are all pretty similar. SMS and Game Gear are almost identical aside from how the palette is handled, and Colecovision uses the same CPU and a similar VDP. If you want a game that's really easy to emulate, Phoenix and Space Invaders seem to be best.
It's been said that you can't do an emu as your first programming project, but that's not true. If you've been into emulators long enough to remember ESNES, the author's page mentioned that it was his first real programming project. That doesn't mean it will be easy, though. You've got a lot of stuff to learn: 1) General programming concepts: Programming is not intrinsically difficult, but it's difficult to really get things done without a good understanding of the methods available and strong problem-solving skills. A basic knowledge of algebra concepts (e.g. what you'd get from a decent pre-algebra class) would probably help too. You will have to learn at least one programming language. I suggest learning C..., as it is relatively portable, still enjoys popular use, and provides suitable mechanisms for writing emulators and similar low-level applications. In order to learn C, you'll also need a C compiler..., or else you'll be stuck once you want to test any code. 2) Digital logic...: This is the basis for all digital computers. You don't necessarily need to know much about it to be a programmer, but it's nice to know when writing an emulator. You don't necessarily need to go through all the stuff about the complex constructs like latches/flip-flops, but it's important to be familiar with all the logic operations. 3) Assembly language programming and computer archite...: How computers are built and the programs that they actually run. Without an understanding of this information, you probably won't be writing an emulator, since an emulator has to reproduce the behavior of a computer. The book I've linked to is about the Intel 80x86 family specifically, but the basic concepts will translate to other processors. Specifically, Volumes 1 and 2 contain most of the general information that will be useful. I'd like to provide you with some better resources, but I learned this stuff rather haphazardly over the course of some years, mostly running into bad texts. If you have any "stupid" questions, feel free to PM me. |
ExCyber | Aug 19, 2002 | |||
You can use any plain text editor (such as Notepad) to write C. There are some nicer ones floating around that can do fancy things like auto-indent and syntax highlighting/checking, but it's mostly up to you to decide what editor to use. As for compiling, that's why I linked the phraser "C compiler" to MinGW.... There are a few others that are available for free, such as Borland C++... (registration required) and LCC-Win32..., but I suggested MinGW because I know it works and because it's more or less guaranteed to remain free. |
AngelBass | Aug 19, 2002 | |||
ok thx for the tips! ill use that compiler!so any text program and that compiler and i should be able to start writing? |
ExCyber | Aug 19, 2002 | ||||
Pretty much. I also just recalled that Colin Peters has an introduction... to programming Win32 with GNU tools (MinGW uses these), so you might want to check that out. |
AngelBass | Aug 20, 2002 | |||
thx for the help, ive already compiled a couple of really small and useless program, but i had alot of fun! The docs you gave me are very well done! And by the way, the problem i had with the compiler is that i was naming the file like "hello.c" but the notepad was adding the .txt extension and i wasnt aware, now its ok. |
Cynnamin | Aug 22, 2002 | |||
PLEASE GOD MAKE IT STOP!!!!!!!! *keels over and dies* |
ExCyber | Aug 22, 2002 | |||||||
The beast is stunned! Keep helping novice programmers until it can be captured!
Err... never mind. Return to your stations, everyone. |
ExCyber | Aug 22, 2002 | ||||
I guess I missed a question:
C is a platform-independent programming language that was invented at Bell Labs and later tweaked to create the first portable version of Unix. There are two major versions: K&R and ANSI. The differences between these are relatively minor, but can affect compatibility. C++ is an "enhanced C" that's designed for object-oriented programming (a philosophy of programming that emphasizes bundling code and data into packages called "objects" that interact with each other). It's fairly popular, but it's a bit less standardized since it hasn't been around as long as C has. C+ is C++ with a dying "+" key on its keyboard. : Writing an emulator using the advanced features of C++ would probably not be the greatest idea, since they often sacrifice speed for convenience. |
Cynnamin | Aug 22, 2002 | |||
*sigh* I am greatly afraid of what happens when this person figures out exactly what structured programming is and what programming logic is. Of course, highly doubtful that they will but... of course I'm being nice again. I should stop that. |
AngelBass | Aug 23, 2002 | |||
Wow Cynnamin..what a great supporter you are!lol |
Cynnamin | Aug 23, 2002 | |||
You can't just say "Woo! I'm gonna code an emulator!" and do it unless you have the programming background to DO it. It amazes me that so many people think they can read a book and ask questions and BOOM! they can churn out an emulator like it's nothing. Most of the emulators out there have been under development for YEARS and there are none that are COMPLETE (correct me if I'm wrong?). It involves a whole lot more work than "hello world!". It's a very slow process and barely rewarding at all since it'll be forever before you even have anything that could be considered 'usable.' Knowing how to code is only 1/3 of making an emulator. You also need to know how the system you are focusing on works and the technical specs. You also need to know how your pc and operating system work and how to interface the console onto a pc since you can't write an emulator and toss it on a cart and stick that into a machine. (Dreamcast Emus still require knowledge of a tiny bit of WinCE) More power to you if you think you can do it. However, chances are in a week you'll be frustrated and bored and eventually lose interest alltogether seeing as you won't have an emulator for at least a few months seeing as you know almost NOTHING about programming. Amaze me and prove me wrong. |
ExCyber | Aug 23, 2002 | |||||||||||||||||||
Right, but it's not particularly useful to just say "you can't do it, it's too complicated". All I'm doing is trying to give AngelBass a glimpse of the actual complexity of it; whether or not it's too complicated to pursue is a matter of opinion, and there's only one person whose opinion really counts.
There are varying definitions of "complete". There are reasonably playable emulators that were knocked together in a matter of months (and Icer Addis/Smegma/Sardu said that the original NESticle was "essentially the product of 2 weeks of boredom and a smattering of effort", though whether or not he was joking is anyone's guess).
That's only true if you're doing all of the reverse engineering on a complex system yourself. Coding an emulator for a well-documented system does not take all that long. The long development history of most emus is due to minor incompatibilities that crop up as more and more people try running more and more games on the emulator.
This is a myth. Windows CE is not in any way an integral part of the Dreamcast platform (aside from the logo being printed on the case :
There are a number of well-documented systems out there, but it's not worth worrying about until the basis is there to understand the documentation.
Entirely possible (likely even, from a purely statistical standpoint), but there's only one way to find out. If AngelBass sees the information out there and decides to quit, that's what happens - no way around it. But that's no reason to encourage a defeatist attitude. |
vbt | Aug 23, 2002 | |||
Nothing is impossible ExCyber, he could learn C in one or two month but for making an emulator, he'll had to understand everything on a console hardware. The best thing to do is to search for existing emulator source code and try to understand how it works before making some wrong code. |
1 | 2 | Next> |