Well, since I already have Visual Studio and CMake on my system, I went ahead and compiled the stuff in his repository. Unfortunately, turns out his repo has only the source code of the DLL. Not the patcher that would make the necessary changes to the game EXE. Here's the compiled DLL anyway in case it's useful to someone.
BTW, Nathan Baggs has a video about fixing the game to make it run on modern systems: https://www.youtube.com/watch?v=d9iI0F93XT8
@gho You're misunderstanding the disassembly. Most functions put their return values in EAX. The game is testing the final bit of the return value of GetLogicalDrives, not the code. Looking at the documentation, the final bit indicates whether an A: drive is present. In other words, Zork Nemesis skips the call to GetDriveTypeA unless you have an A: drive. This must be why setting FakeCD to A: helps.
3.82 released
Increased version number to 3.82
Fixed crash when trying to play music from YouTube
Changed youtube-dl updater to use yt-dl.org domain
Track list extraction improvements
Added detection for AC-3 codec
Metadata character set encoding now defaults to UTF-8 if charset detection fails
3.81 released.
Opus audio format and WebM container format are now officially supported on Windows 10.
3.80 released
Increased version number to 3.80
Fixed adjusting for title bar height with per monitor DPI awareness v2
Fixed audio being skipped in a playlist of Ogg Vorbis files
Automatic character set detection for metadata
Changelog entry for the previous commit
Fixed crash when drag-and-dropping a file with Unicode characters in the name.
Restored the workaround for crashing when visualization code empties the whole buffer
Fixed a handle leak with local files.
Fixed a handle leak in NVorbis demuxer.
Refactored Ogg Vorbis decoding a bit.
Fixed random crash at the end of Vorbis streams
Added Ogg Vorbis support via the NVorbis library.
Split demuxing away from decoding
Enabled per monitor awareness v2
3.73 released.
Fixed random crash with YouTube videos
3.72 released.
Increased version number to 3.72
Avoid streams with low sample rate
Improved YouTube stream selection
We now receive audio sample rate from youtube-dl
3.71 released.
Fixed playback of YouTube playlists
3.70 released.
Preparing for a release.
Updated LitJSON to version 0.12.0.
Upgraded SharpDX to version 4.0.1.
Fixed updater being cut off.
* Increased required version of .NET Framework to 4.5.
3.60 released.
Updated the year.
Updater: fixed wrong calling convention for GetMonitorDPI.dll
XAudio2: support for sample rate changes
DirectSound: support for sample rate changes
Fixed: on a monitor with a different DPI than on the default monitor, the default size of the window wasn't scaled.
Preparing for a release.
Fixed: when playing an online playlist with DirectSound, the last second of each track looped when the program was waiting for the next track to open.
Fixed: when trying to play a SoundCloud playlist, Keppi only played the first track or two.
Fixed crash when trying to play a playlist with deleted videos.
Keppi no longer downloads all videos at once when playing a YouTube playlist.
WIP: YouTube playlist support
Added a M3U parser.
Fixed: if the response from youtube-dl servers was already decompressed, the updater hung.
Some refactoring for playlist support.
Fixed crash when the user opens multiple tracks in the same session.
Implemented support to open multiple files at once with drag-and-drop.
Initial playlist support.
Some refactoring in preparation for playlist support.
Clicking the visualization now pauses and unpauses.
Fixed: audio playback restarted if the user paused the playback, the computer went to sleep and it awoke from sleep.
Changed youtube-dl updater to use LINQ SequenceEqual() instead of a custom ArraysMatch() function.
The audio decoder now detects floating-point WAV.
Increased version number to 4.00-SVN.
3.50 released.
Preparing for a release.
Added gzip support to youtube-dl updater.
The audio playback is now paused when the DirectX context is lost.
Added a check in an attempt to figure out the mysterious problem where the playback stops and the program gets into an unstable state.
Reimplemented support for drag-and-drop.
Implemented determining the path of the dropped file.
Added an empty event handler for WM_DROPFILES.
The visualization child window now has the WS_EX_ACCEPTFILES window style.
Reimplemented resetting the DirectX device after losing it.
Restored the easter egg.
Changed the visualization from D3DImage to HwndHost.
Fixed calling convention mismatch for custom DLLs.
Fixed crash when the window is resized to such a small size that the visualization disappears.
Added a key combination (Ctrl-G) to move the window to the top-left corner of the primary screen.
The youtube-dl updater is now per monitor DPI aware, including changing window scale when the window is moved across monitors.
The "Open URL", "Youtube-dl update" and "About Keppi" dialogs are now per monitor DPI aware.
Fixed: button icons were incorrectly centered on Windows 7.
Fixed: saved window size wasn't respected, Keppi always launched at default size (or maximized).
Fixed crash on startup if the program is run from a read-only media (e.g. a CD).
The main window is now correctly scaled even if it's opened on a secondary monitor.
Fixed a handle leak in GetMonitorDPI.
Added a custom DLL project to retrieve the DPI for the monitor where a window is.
Keppi's main window is now per monitor DPI aware.
Implemented inverse scaling for WPF DPI scaling. This allows the visualization to stay pixel perfect on high-DPI displays.
Initial work on playlist support.
Added an abstract AudioDecoder superclass to al...
Attempted fix for the track name display not ch...
Fixed crash if the user pressed Space during th...
Fixed: with DirectSound, attempting to restart ...
Fixed: after the file ended, restarting it requ...
Fixed: toggling play/pause after the end paused...
Now the status bar shows the audio format and c...
Pressing space now toggles play/pause.