This is the DOS version of Prince of Persia, the classic 2D platformer originally released for Apple II in 1989. This version is the most popular among the RTA runners of the game.
Game objectives
- Emulator used: JPC-RR r11.8-rc2
- BIOS used: The BIOS and VGABIOS that come pre-bundled with the emulator was used as instructed in the emulator description page.
- The objective of the run is to complete the game, which is this case means saving the princess from the evil Jaffar.
- No major glitches are to be used in the run, see below for more details.
- The only notable "programming error" taken advantage of in the run is the jingle skip at the end of few levels. Killing an enemy at the end of a level before entering the final door "replaces" the long end of the level jingle with the the much shorter enemy kill jingle.
- We control only one character in the run - the kid (who becomes the prince at the end of the game).
- Hits are taken at some parts of the run if that's how the RNG is, it neither gains nor loses any significant time.
- There are exactly two restarts, one skips a short jingle and one is just faster in terms of movement. No deaths.
- Ruleset of this run is completely derived from the RTA No Major Glitches runs, which is as follows:
- The following things are considered glitches:
- Screen-wrapping
- Guard-clipping (guard-jumping)
- Falling or clipping through floors and closed gates (specifically corners)
- Fall damage crouch cancel
- Inactive chomper glitch
- Guard through-gate lure glitch
- Here is a guide that explains these with GIFs showing examples - https://www.speedrun.com/pop1/guide/m4j3u
- Sound & music must be enabled at all times during the run.
- Ctrl+A to restart a level is allowed, except for situations where it would cause a glitched advance to next level instead of restarting.
- You can skip cutscenes between levels.
This is a "No Major Glitches" run of the game which is more movement based. Almost all the inputs can be buffered in this game. The biggest trouble of the run is dealing with guard RNG. They can not only mess you up when trying to cross them but also affect prince's positioning which is super important for the movement section that follows right after. The main way of manipulating the RNG used in the run is waiting for a few frames. In most of the cases waiting for 1 frame was sufficient but there were places where I had to wait for more. The biggest potential to improved this run is doing more research into RNG manipulation and making things stuff line up more perfectly. Jumping is the fastest movement when in flat terrain, however depending on the layout of the room, various other movements are done to gain time. The most common way to deal with enemies is to stop as close to them as possible and switch sides with them. After that we either get further away from them, put away our swords and continue, or strike them and put away our swords and continue. The latter is preferred only when it allows for an extra jump to be possible. I also tried a lot to set up soundblaster but for some reason the emulator used PC speaker sounds for SFX, luckily atleast the jingles played in soundblaster.
Level 1
This level is a simple one but it already does something unintended. We lure the guard into the a specific spot and then we are able to take a path that gets around him without having to pickup the sword and killing him. This saves about a full minute. Aside from that several small movement optimizations were done, the bunny hops to skip the slow "getting up" animation, using the "turnaround" to bonk into walls faster, carefully spacing jumps to travel minimum distance and hence making maximum use of the "snap" feature to grab ledges to name a few. The good thing about this level is that its completely RNG free.
Level 2
This is the level where the RNG Gods strike first. I had to wait 1 frame for the first guard. I got hit by the second guard. The orange guard was surprisingly nice and I used the last guard to set-up a really precise chain of jumps that involves barely avoiding some spikes. The rest of the level is just movement and thanks to the massive "hitbox" of the final door we are able to get a massive snap and enter it to finish the level.
Level 3
This level is actually again one of the completely RNG free levels, despite containing the most infamous skeleton enemy. The entire level is full of movement optimizations, mostly the ones mentioned previously in level 1 description. We are able to jump over the skeleton avoiding having to swap places with him and just run away without having to deal with him, which is a really cumbersome process as he has infinite health and the only way to be rid of him is to push him into a pit. The rest of the level is straight-forward.
Level 4
This level starts with a movement section which involves a precise turnaround to make a loose tile open a door that needs to be opened to progress. It becomes even more precise if we need be in a good position to be able to jump and grab a ledge on the way back. Proceeding further we deal with the first enemy. He didnt pose any problems although he managed to push us one unit further than where we need to be but thanks to the snap feature it doesnt lose any time. We proceed an meet the enemy beside the door, we temporarily spare him and proceed to the section where the final button is. After some precise jumps back and forth through a chomper and going through the mirror that suddenly spawns and creates a friendly shadow of us, we return to the enemy and kill him to skip the end level jingle.
Level 5
This level is both heavily RNG and movement based. There is nothing special to talk about this level other the fact that I got pretty decent RNG from the guards.
Level 6
This is the shortest level of the game, it contains the "mini-boss", aka the fat guard. We dont have to kill him so we just ignore him and jump through the final pit to trigger the next level.
Level 7
If you played the casually, you know that this is exactly where the hard part of the game starts. There are few guards in the level who actually gave the perfect patterns that can be expected from them. This is also the first level where we continuously step away from an enemy till we reach a pit to skip the sword put away animation. After some precise platforming the movement section and dealing with the next guard, we take the floating potion to reach the bottom of the level and exit it.
Level 8
This level has quite a few guards and some cool movement sections. The way we deal with the first guard is the first major difference from RTA runs, we throw him into the spike pit instead of switching sides with him so that we can clear the next jump without having to grab the ledge and also preserving the momentum. After traversing the long corridor and dealing with some guards on the way, we reach the final section of the level. The final orange guard was not behaving and marks the first instance of having to wait multiple frames to get the required result. And then we finish the final corridor and exit it without having to wait for the mouse to come rescue us and proceed to finish the level.
Level 9
If I have to pick one level that I am least happy with despite being happy with the overall result, it will probably be this one. The RNG I got was below decent and were such that it forced me to certain movement sections without making full use of the snap. But as a reward we get to do the most satisfying movement section in my opinion perfectly. And then we proceed to the final guard and again use the backing away continuously to skip the sword put away and enter the final door.
Level 10
This level again has a lot of guards and also a lot of variety in the way we deal with them. This is the first level where were are forced to kill a guard that is not near gate (atleast in order to be fast). We also kill the final guard to skip the jingle. Despite all this, I surprisingly got really good rng and had wait very few frame throughout the whole level.
Level 11
Most of this level is fully consistent, other than the last guard, and he decided to give the worse pattern unfortunately. But as a redemption, we lure him near the end of the door and throw him off the edge and enter the final door while skipping the jingle.
Level 12
As a reward for all the things we did so far, we are presented with a RNG-free level. After some platforming we climb the tower and and the end we meet our friend shadow again and merge with him. We have to wait for the merging to completely finish or else the invisible bridge in the next room wont spawn.
Level 13
Two things in this level. Falling tiles and Jaffar. The former was luckily nice and I was able to get around without having to do any sort of manipulation (yes they dont fall in a consistent pattern). With Jaffar we are able to do a running jump from a very specific position to get as near him as possible and stab him before he wakes up. This is actually slower in IGT which is used to time the RTA runs of the game but faster in TAS timing thanks to fact that we can chain two jumps on the way back. The IGT is already stopped at this point.
Level 14
This level is a nice, charming reward for completing the game and we get to reunite with the princess at the end of the corridor. The only thing notable about this level is some carefully timed jumped to get under doors without losing momentum. And this final cutscene is considered to be the end of the game.
Final Thoughts and acknowledgements
I had quite a lot of fun making this and I hope you will watching this as well :D. I am happy with the result I got but I may return to this in the future to try make some improvements, especially in terms of RNG. I would like to specially thank 7eraser7, eien86, higlak for helping me in routing certain parts, timing the strats and in general the whole RTA speedrunning community for being supportive and providing very good feedback whenever I asked for it.
feos: Embedded the encode.
slamo: The quality of this run is obviously quite good. The routing and the overall use of tech is well done. Unfortunately, as outlined in
this post, this run uses a cracked version to skip a copy protection sequence and therefore does not meet our standards for game authenticity.
There was much discussion about the game category. There are still things that might be considered glitches such as the jingle skip, and trying to draw the line between "major" and "minor" glitches is always going to be arbitrary. When you come up with a goal other than any% or 100%, please make sure the goal is very well-defined and constantly adhered to. The goal should offer some different content than any% and 100%, and it should also be entertaining enough; my impression from this run and its feedback is that a pure glitchless run would check both boxes, if you can indeed prove that no glitches are being used.
It's pretty clear that you know how to make a good TAS, and I hope you do pursue other TASes in the future; so much of the DOS library is untouched!
Rejecting for modified game files.
slamo: Revisiting this for Playground, and I think it fits. The goal is somewhat arbitrary but well-defined, and we know that it syncs with a known cracked version. This cracked version isn't eligible for publication but these should generally be ok for Playground, as long as the version isn't too obscure. Moving to Playground.