View Full Version : Fundamentals of emu programming

August 18th, 2003, 21:13
I've wanted to become an emu author for a long time. Studies at college and work have prevented me from doing so, and of course, if you're going to author an emu you need to buy the console you're going to emulate as well as some games.

Before everyone goes telling me that you need to learn C/OpenGL/DirectX/etc to author an emu, I'm quite aware. That's not the problem. Learning languages is easy. Finding the time, motivation, and money to author an emu is. I'm sure Schibo, Rice, and anyone else I'm forgetting can tell us all about that.

Let's talk about the GC. I'm aware of the amazing difficulty of reverse engineering it. The minidiscs are of particular interest. I'm told they have been burned in reverse and the GC reads them in reverse. (from outside to in instead of inside to out) This provides a fundamental challenge to ripping your GC disks into isos. But what about the core OS running on the GC? I wonder if anyone has ever successfully extracted it and ported it to x86? I'm also not clear on how someone goes about this whole extraction/porting process. It's one thing to simply write a program which accepts OpenGL/DirectX plugins, but it's an entirely different animal trying to write a program that will process encrypted game data, that being ROMs.

The subject of emulation facsinates me and I'm hoping that I'll soon find my answers. Personally, and I don't know how successful this goal will be, I am hoping to learn more about the fine art of emu programming so that I can go about buying/constructing hardware to begin the extraction process fo the GC OS as well as making isos out of GC minidisks. If I can do that, I may perhaps be the first GC emu author, or contribute to a larger GC emu project.

Anyone who can offer some general insight is appreciated.

August 18th, 2003, 21:27
Depending on how dedicated you are you could probaly pull anything off but I think the GC hasn't been around that long for anyone to know very much about it and it's going to take time and effort before anyone does.

Although the Gekko seems to be pretty much emulated at the time being and it's well documented and from what I've heard the GPU is also quite well documented so that shouldn't be a problem.

I don't think it's a possibillity to extraxt the GC os and to port it to x86, that's where emulation comes in...

I really don't know wheater the GC dicsc have been burned backwards and read reverse but from what I've heard they spin like every other disc out there. And at the moment there's only one person, group who have the possibillity of ripping GC discs and releasing them as isos, somehow I doubt they are going to share their intel at this point...

So, in conslusion all I can say is that sometime "to start small may be big..." aka don't be overambitious with your 1st projects. Make something less ambitious, i.e gb emu, and learn the ropes from there and make as many mistakes you can and learn from them and later on when you feel confident about what you are doing, thing big..

Zilmar's emubook is a good resource, it's interesting and definitely worth a look or two ;)


So is dextrose and it's forum...

August 23rd, 2003, 12:31
and so is the emulation docs over at www.goldroad.co.uk

August 23rd, 2003, 17:47
Gekko is well documented and emulated to an extent... but there's one important feature which isn't emulated and will be extremely painful, especially from a performance perspective... paired singles.

August 24th, 2003, 13:11
Tagrineth, don't talk about what you don't know about ;)

August 24th, 2003, 15:32
Yeah ector's recommendation with chip8 is very good, the cpu is easy
aswell as the 1bit encoded gfx. Its ideal to start with and doesn't
take much time :)

August 28th, 2003, 00:17
the ngc cpu , gekko is said to have 50 new instructions add to it.

and still is not even well emulated.if it was than at least we whould see gc games booting up.with the old (nintendo) logo.

August 28th, 2003, 00:23
I think I'm going to follow ector's advice on this one ;)