Alright, it's time for another update, this time a big one!
I've added and/or changed the following things:
1. Implemented kvee's IMFPLAY code (thanks, kvee!) to the best of my ability, although the timing's still a little weird! Annoying but that's the way it is for now. I have managed to reconcile the music timing with the main game loop timing though. They *should* be independent of each other, up to a point.
2. Cleaned up the code big time, making everything more efficient and faster in the process. It now runs at the required 24fps at 30000 DOSBox cycles, or about a 486DX2/66. Before it ran at about 10fps at 20000 cycles, so that's an improvement.
3. Made the loading process MUCH faster; now it takes about a half a second to load as opposed to taking 20-30 seconds before. Much better.
4. Reworked the physics somewhat. Now it looks and feels much more like actual Keen.
5. Now it loads ALL the sprites from Keen 4, and not just the player ones. This is for future use, as I haven't implemented enemies yet.
6. Added more debug info in debug mode and added an actual error handling routine.
A great way to tell if you're running it at full capacity is if you press F10+D, this opens the debug information and tells you your current maximum frames per second in the middle of the screen. That number should be about 30 or above when Keen's not moving, since it dips significantly when the screen scrolls.
Note that the engine throttles the fps at 24, so things might look a little choppy compared to actual Keen. If I make the engine fast enough in the future, I might make the movement smoother and increase the framerate, but it works for now. It's much better than it was though.
It also has rudimentary slopes, but they really don't work at all and I'm banging my head against the wall trying to figure out how Keen originally did it. Anyone have some help for me there?
Here's the download link: https://drive.google.com/open?id=0Bwrva ... DlDQ0poWGs
Edit: Here's a demo video: https://youtu.be/_eqRrTDYkfA