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