Phantom Full Force wrote:However, I've only made quick glances over the source code and I can't make much sense of it.
Reading other peoples' code is difficult, especially if you're still starting out. Keep at it. Start with simpler projects. Most importantly of all, take the initiative and try to develop your own code. The more you do in your spare time, the better. You have to learn
how to learn; how to teach yourself, in other words.
Mind if I ask some questions, like...what was your motivation or purpose for embarking on this project?
Back in 2002 and 2003, Model 3 hadn't been emulated at all, so the motivation was quite simply to do that. I'd say Ville Linde and Stefano deserve more credit for that, though. I always wanted to see Supermodel running full speed on my system and wanted to use it as a platform to teach myself OpenGL and how to do a proper dynamic recompiler. I had to drop the project during my senior year of college and then, subsequently, grad school took over my life and 4-5 years went by without me doing any more serious coding. So late last December, during my winter vacation, I decided to resurrect the project partly to serve as a little code demo. I knew my skills hadn't atrophied too much, but I needed to actually be able to prove that.
How long did it take and what should you know to be able to do something like this?
It only took a couple weeks to get things running in late December/early January. This question would have been better addressed to me in 2003.
At that point, I was a sophomore in college and had been programming for several years. It wasn't until the very end of 8th grade (junior high) and through 9th grade (my first year of high school) that I really got started. Prior to that, I knew enough QuickBASIC to be dangerous. I originally tried learning C++ with one of those 'Teach Yourself in 21 Days' books but did not get very far with it. I didn't feel like I was really "getting it" when it came to pointers, for example. So I bugged the author, Jesse Liberty (IIRC), about it and he told me that I'd really have to learn assembly language to understand it. And so I did, and spent those 2 years playing around with NASM on DOS. Then, when I went back to C (teaching myself from the excellent 'A Book on C'), it instantly clicked and I realized I could now do what I had set out to do: graphics, games, and an emulator.
Genecyst and NESticle were all the rage back then, and I really wanted to learn how to do the same. I think I released 'Genital' during my junior year of high school, having learned a lot from looking at DGen's source code and the Starscream 68K core, and the rest is history. Given my unique last name, I really came to regret naming it that. Took a lot of effort on my part to scrub the Internet clean (enough) of that association

And ultimately, is there anything that a novice like me could do to help even the slightest?
On Supermodel? Unfortunately, probably not yet, unless you can figure out what's going on in the source and want to work on the front end of things (user interface type stuff). I don't think it's the best project to get started with, though. Emulating a proprietary arcade system is pretty arcane. I'd recommend getting into the gaming or mobile development scenes. A lot of action there these days...