Yeah, it's a big job, hence why it hasn't been done. Although, I have been saying for a while that it's probably less work to remake the game than to keep patching the current copy to get all the bugs out. Of course that also depends on how closely a remake follows the current game. There are certain internal calculations we never looked for or found, so we wouldn't know how to do them accurately. Plus there are a few odditied in the game we wouldn't even know to look for. We just sort of accidentally find them from time to time. Like how lasers and microwaves have a bonus when attacking walls. How are we supposed to know to look for that? Plus, even if we know to look for something, would we really want it to be the same? Anyone here a fan of the pathfinding?
And yes, there is all that data we can use, but is it in a useful format? There's no real meta data associating the graphics in there with what it's used for. It's just a compilation of various graphics. The game engine hardcodes the index of the graphics for various uses. There is no easy way to extract that info. How do you find all the weapon turret graphics? Well, you can look through ALL the graphics and pull them out, or you can check all the weapons drawing code in the exe to find the hardcoded constants. Now consider how small some of those graphics are. I don't know what at lot of them were used for just by looking at them. Some of them are too small to get enough context to figure out what it is. Plus a few of them were never used. The howling dog and the walking santa are obvious examples, but how do we know if any of the others are unused?
That and the way the levels/campaigns are done.... Sure it's kind of cool, but I can't imagine anyone sticking with that format for a remake. Who wants to learn C++ programming just to make a level? Trying to extract the level data inside of a DLL for use in some other format that might be designed is not such an easy task either. I can think of some automated ways of appoximating that info, but to be sure it's the same would take some painstaking analysis of the DLL code.
Just because the data is there, doesn't mean it'd be easy to use it.