Port of SGI ElectroPaint screensaver made via decompilation
github.com
github.com
I would personally quite like the 'cpueater' desktop back, with some giant SGI logo rotating around in the corner of my desktop. I know everything is supposed to be better these days, but I don't feel it is. So much of the IRIX desktop - including the screen savers - could do with being rediscovered. I liked things like those little scroll wheels to zoom up the icons in a folder. The icon animations were pretty cool too, they had a language of their own so you knew if something was open or running from the icon state.
Thinking about it, when IRIX died, Linux was just a little bit lame on the look and feel aspect. Imagine how cool it would have been if the picks of IRIX were ported to Linux to deliver a decent desktop. SGI could have done that but they went with NT. Had they gone the Linux direction they could have brought the 3D content tool makers over to it and they could have created something useful for programmer types. But it all went babies and bath water.
P.S. Is Google Docs still down?
Singular focus and commitment to an idea is magical. SGIs were magical.
It's super weird that this port is a Windows app, though!
A WebGL or GLES version would be great, but I actually don't know much at all about graphics!
By the way, as far as I can tell, I don't think you broke anything in your port. The disassembly of the OpenGL version's drawing routines looks like a pretty direct translation of the routines from the ep source that comes with IGL. The random seed initialization is the same in both, too:
srand(0);
srand(time(NULL)); var_10 = s1.u64;
ARGS->f13.s = f22.s;
var_B8 = ra.u64;
{
ARGS->f14.s = f22.s;
wrap_glColor3f((float) ARGS->f12.s, (float) ARGS->f13.s, (float) ARGS->f14.s, wincount);
}
Nope. Furthermore, I don't understand the license on that core file (ep.c). Are we free to improve it and recover cleaner code?How does your technique in epanos compare to https://github.com/notaz/ia32rtools used to decompile Starcraft so it could be ported to ARM?
If you do get around to it, I'd love to see a Linux version. Even a 32-bit only version would be sweet. I've had great success with the ia32-libs getting 32-bit apps to run on 64-bit OS's.
I saw ia32rtools when it was released (and was impressed, since x86 is so much more difficult than MIPS), but I haven't had a good chance to really look over how it works. But I think his approach is roughly the same in spirit--the translation from disassembly to C is pretty direct. His tool has to track the stack, set flags for instructions that change them, and other things like that; my decompiler doesn't bother with the stack at all (the ElectroPaint binary has no functions that spill arguments to stack and never adjusts the stack pointer within a function), and MIPS doesn't have "flags" (ALU comparison results are just stored in a GPR, though floating point comparisons do have a flag--I think later MIPS versions have multiple condition FPU registers though). Both tools handle variable argument functions, and of course in order to do so you have to have special handling of each function--that's why my decompiler has an entire parser just for printf and scanf...fortunately the only variable argument functions used by ep. :)
I don't know if or when I'll have time for a Linux version, but I would love to see it made available for all OSes. I just know I can't personally commit to properly maintaining it for more than one platform for the time being, mostly because of the 64-bit issue more than anything...
> ElectroPortis is a Windows version of ElectroPaint, the only screensaver. This is the real deal. It is not a clone, nor a reimplementation, nor a product of manual reverse engineering. It was made by running the original binary through a custom MIPS to C decompiler.
but later, says that it's the OpenGL version and links to these words:
> During my time at SGI I rewrote Electropaint to use OpenGL instead of IrisGL and it wasn't quite the same afterwards (I removed the control UI since the panels toolkit wasn't making the journey and I must have broken the random seed...).
Wouldn't be such a pedant normally, but if you're going to make such a fuss about it being the "original," don't contradict yourself on the same page...
I should dig up the registration info and see if it still runs in modern Windows...
(The default sequencer script of this port is in src/ep.c, under "static char *defaultScript")
Enjoy!
Edit: I checked Youtube, and you're definitely right. Thank you! Here's the video - http://youtu.be/EbLhw_zJiFo - if you liked Electropaint you may like this.