Ray Arachelian writes:
Of course the real problem is that since it was written in .NET it will
have to be a whole rewrite into C or C++ or something that either Qt or wx
supports. I'd opt for pure C for all the low level stuff and C++ or
something else for the UI. mono and .Net are nice and all, but I'd say
they're far from an ideal platform for an emulator. Yes, I know, there's
a PC emulator written in JAVA, today's machines are capable of running an
emulator inside a virtual machine (ok, with JIT compilation), but why put
up with all the overhead?
I like C# (and 'managed' code in general) because it allows me to focus on
the problem rather than the tool. I can fool around with ideas and write
fairly clean code in C# very quickly and I don't have to worry about mundane
details like memory management, bad pointers, and stupid "shoot yourself in
the foot" mistakes (I consider myself a good programmer, but that doesn't
mean I don't appreciate a language that helps me write better code). I
wrote most of the code for this emulator in my spare time over just 5 weeks
at the end of 2006, it just got moved to the back burner until recently.
Yes, it's probably not as fast as something written in pure C but I'm not
too concerned about that. The portability issue is unfortunate, but I'm
hoping that Mono will make it possible to run it on non-Windows platforms.
(It looks like Mono now has some manner of Winforms support, so it may not
even be necessary to make any changes at all...)
I wouldn't mind rewriting it in C after getting everything worked out in C#,
to make it more palatable for other OSes. But it helps me immensely to
write it in a high-level OOP language first to keep my code (and my mind) in
order. (I don't consider C++ to be "high level" :)).
I've tried to keep the emulation code fairly abstracted from the UI (there's
really only a window and keyboard/mouse input, so it should be trivial to
port to a different system if need be.)
Anyway, I'm very happy to see a PERQ emulator, in
any form.
Thanks. It's been a fun process and I hope that someone somewhere gets some
use out of it once I get it working better :).
Josh