Back in the year 2000, it was not uncommon to order software from the Scholastic/Lucky Book Club, upon which you'd arrive at school only to have the teacher hand out whatever you'd ordered from it. It helped to break up the drudgery of school somewhat, and in the case of ordering "Nile: An Ancient Egyptian Quest", my steadfastly stern no-nonsense teacher marvelled at the box and remarked upon how incredible it looked before she handed it to me.
Nile was actually released a few years prior to when I acquired it, and was originally designed to work with Windows 95. I wanted to fire it up and see if it would work on modern AMD64 Windows, only to find myself disappointed after jumping through several hurdles to be met with an access violation error. It's somewhat unfortunate as Nile was a title made with great enthusiasm and care, featuring not only narration by Kerry McGillis (the chick in Top Gun) but also a soundtrack by Brian Eno (the creator of the Windows 95 startup sound) plus a minigame developed by David Macaulay (of The Way Things Work).
After some trawling in a debugger and some help from CoPilot CLI, however, I managed to get it runing fully on Windows 10. The overall fix, as it turns out, is remarkably simple and is described further below.
I still have my original installation discs, however as Simon and Schuster Interactive shut down in 2003, it's safe to say that Nile may be considered abadonware, with images available on the Internet Archive that may be mounted with VirtualCloneDrive or similar. Unfortunately, even though Nile is a 32-bit program, the installer is 16-bit and won't run on 64-bit Windows. There are a few ways around this:
Once this is done, it should install just fine.
You may be tempted to attempt to run it now, but you'll have to hold off for at least two reasons. Firstly, it won't run, and secondly, even if it does by some miracle, it probably won't do so very well without a DirectX wrapper of some sort:
All of these provide numerous options for getting programs using old DirectX APIs running quite well, with numerous settings available to tailor to your liking.
Once you've configured everything as per above, you may attempt to launch it only to be met with an 0xc0000005 error, after which it goes no further. I attempted to troubleshoot this by loading it into x64dbg, to find that it was crashing right before running something in user32.dll that was preceded by a wsprintf call. Eventually, I realised I don't know assembly well enough to really do this sort of thing on my own and stuck it in CoPilot CLI to do the rest for me.
It managed to find the offset and discovered that the crash is caused by a programming error in the form of a confusion between a buffer and its pointer that presumably flew under the radar due to the rather lax memory protection of Windows 9x. Most insultingly, the buffer that is accessed relates to a debug feature (ImpDebug.out) that goes completely unused by the end user and is apparently inaccessible.
Thankfully, this means that to patch the exe requires changing the value of a single byte which can be performed fairly straightforwardly in a hex editor.
By navigating to 0x0000C394 and changing 0xA1 to 0xB8, it should launch normally!
I also got CoPilot to spit out a diff as well as a Python-based patcher in case you can't be bothered to load up a hex editor.
After this one-byte patch and a DirectX wrapper, Nile runs great. I would have really preferred that the developer bothered to release a patch, however the rather mysterious Zap Media LLC who's credited with development apparently disbanded right after release. Stone House Productions still has their site online however, with Nile listed there to this day.
Most disappointingly, it appears the original author of the engine actually posted on the ScummVM forums informing them that he had the source code available roughly once in 2012 before disappearing forever soon after. It appears nobody bothered to attempt to coerce it out of him for the sake of preservation or whatever else.