In the previous post, I mentioned an inconvenience with the cursors. Here’s the gist of it:
In Dark Seed II, the cursors are embedded into the resource part of the Windows 3.x (NE, “New Executable”) executable dark0001.exe. Specs are available on the Microsoft website, but they don’t quite match the executable, which claims that each cursor is only 32 byte big.
I did manage to extract the cursors in the end, with the help of the great tool “Multi Ripper” (a project that sadly appears to be dead). But when I then began to look for the resulting cursors in the Dark Seed executable, I couldn’t find them there, at least not directly: The headers are, only partly though, in the resource table, where you would expect them. However, the cursors’ data are at a completely different place, a place that I couldn’t construct with any of the offsets I read from the various tables. So I am completely at a loss.
Running Multi Ripper through a disassembler didn’t really help either, since it’s either deliberately obfuscated, or just completely unreadable due to it being written mostly in Clipper (yeah o_O). The link to a wine resource compiler Fingolfin send me didn’t help either (thanks again for looking, though); that compiler agrees with neither the specs, nor with the executable.
Since I was able to at least extract the cursors, I did what I had to do: hard-code the cursor data. So right now, the Dark Seed II engine comes with about 10kb of static cursor data. Not much of a problem, but certainly not as “nice” and clean as I’d like.
Well, if any of you happens to know a thing or two about resource tables in New Executables, please, pipe in and tell me what I did horribly wrong. 🙂
Hm, maybe the XN Resource Editor available from http://www.wilsonc.demon.co.uk/d10resourceeditor.htm can extract the cursor data, too? This tool has the added benefit of being open source — you can download the source code from the same page. It’s written in Delphi, but that’s pretty readable, I think (if you know a little bit Pascal, at least:).
Unfortunately, that program doesn’t like NE files, I’ve already tried it (probably why the website specifically mentions “PE modules”). :/
http://en.wikipedia.org/wiki/New_Executable
This suggests that there are a few programs that support the compression that NE exe’s use.
See Win32ResExtractor class in engines/scumm/he/resource_he.cpp