This is what progress looks like right now:
I've got level rendering mostly done (it took a while to get the "decal textures" rendering correctly on the walls), and I've started working on player movement.
I don't know how far I'll get with the project. If I get to the point where I've got the gameplay 100% replicated, I might try to tackle stuff like adding multiplayer or try to add support for Prince of Persia 2 (which will probably have some big challenges as there's no source code I can reference to figure out how exactly how stuff is handled in that game).
I'm trying to make the gameplay as close as possible to the original POP, but when given the choice I prefer to design more straightforward structures rather than replicating what POP does. For instance, internally, my coordinate system is pretty straightforward: a position of 1 represents 1 pixel in the graphical output, instead of what POP1 does on DOS where it still uses the coordinate system designed for the Apple II original and then converts it to the DOS 320x200 resolution at render time. Those changes will probably result in very small changes to the gameplay.
I've decided to try to move some stuff into scripts to reduce the amount of hardcoded arrays in the code with gameplay information. For instance, I've got all animations defined as external scripts. Here's what the turn animation looks like:
Code: Select all
[POP1_Kid_Turn] Action Turn Flip MoveX 6; ShowFrame 45; Wait MoveX 1; ShowFrame 46; Wait MoveX 2; ShowFrame 47; Wait MoveX -1; ShowFrame 48; Wait MoveX 1; ShowFrame 49; Wait MoveX -2; ShowFrame 50; Wait ShowFrame 51; Wait ShowFrame 52; Wait Anim POP1_Kid_Stand