100% and All 21 Big Life Potions Categories
Prince of Persia (SNES) Forums
100% and All 21 Big Life Potions Categories
Île-de-France, France

That's great, I was thinking about that when talking about inner memory. And now I want to do the same with 100% on DOS :D

uvq3tsa likes this
United States

On the subject of memory for guard status, I'm curious to hear about that, because it's probably much more complicated. Like potions, guards will probably have a location related to their spawn placement; but from there, they can move quite a bit, and into different rooms, and end up dead or alive in many different places with pixel precision. Furthermore, if the Prince leaves the room while the guard is in the middle of his death animation (crumpling to the ground), the guard will come back to life after you return to the room 2x.

The Gold Skeleton at the end of Level 12 will always come back to life after 2x revisits.

It's also possible to use select menu to skip the Woman's intro, and move around while she's still jumping in, causing her to freeze in mid-air. You can manipulate this further by exiting and entering the room many times, until you get her close to the ground, then she can fall through the floor and die without activating the gate. lol.

Also possible on Level 15 to get 2 active guards in the same location, and which one is loaded depends on which room you're in. Each time you switch rooms, the previous guard reloads with full health.

Just some examples of how there must be a complicated set of memory points to cover these things.


On the subject of the kill potion again, it was mentioned by GMP that the purpose of drinking detrimental potions was to clear the level map more thoroughly. On this point, we could also argue that the kill potion is in the same room as a target Life Potion. So the room itself is a cleared diversion anyway. Really, the Kill Potion there serves as a trap, the 50-50 chance of choosing the right or wrong drink. If you drink the kill potion, it is only 1 room past the checkpoint, so you would continue only 1 room back, but then again, the memory for all previously drunk bottles will be reset, such that they could be respawned if you backtracked into the first half of the level with Gate Skip & Invincibility.

I think I also mentioned previously that if you grab Invincibility during level 8, you can drink the Kill Potion and you will not die. That trick costs about 30 seconds though.

Edited by the author 10 months ago

David came up with something for the guards. He points out a caveat: A guard may die in a room different from where he starts the level. This can be a problem if you need to know which guards died. If you only need the number of guards who died on a level, then you can increase a counter every time a guard dies, then check its value when the level ends.

He also originally found an issue with the skeleton on Level 3 as ''Guard_alive stays -1 even when the skeleton is crushed'', but did manage to find a fix for that and that's what's posted here.

Now it's just a matter I believe for someone like GMP to use the previous post of mine and this one to put all this into the autosplitter for snes9x-1.60-win32-x64.

Here's what David found:

state("snes9x-x64") { sbyte Guard_alive : "snes9x-x64.exe", 0x008D8C38, 0x0486; // 7E:0486 byte Guard_room : "snes9x-x64.exe", 0x008D8C38, 0x0482; // 7E:0482 byte Guard_direction : "snes9x-x64.exe", 0x008D8C38, 0x047A; // 7E:047A byte Guard_hp : "snes9x-x64.exe", 0x008D8C38, 0x050B; // 7E:050B byte Guard_frame : "snes9x-x64.exe", 0x008D8C38, 0x0477; // 7E:0477 }

update { //print("Guard_direction = " + current.Guard_direction); // 0x00=right, 0x80=left, 0x7F=no guard if (current.Guard_direction != 0x7F) // if there is an active guard { //print("Guard_alive = " + current.Guard_alive); // -1 (0xFF) if alive, 0 if dead //print("Guard_room = " + current.Guard_room); //print("Guard_hp = " + current.Guard_hp); //print("Guard_frame = " + current.Guard_frame); // 184 = crushed if ((current.Guard_alive == 0 || current.Guard_frame == 184) && (old.Guard_alive == -1 && old.Guard_frame != 184)) { print("A guard died in room " + current.Guard_room + " of level " + (current.CurrentLevel+1)); } } }

Edited by the author 10 months ago
VelCheran likes this
United States

I had some quick thoughts about 100% in the new category labels stickie thread. I'll mention them here real quick. I think we could eventually sub-divide 100% into 2 sub-categories, the same way they've set up Any%. That would be "No Exit Glitch" for the existing run, and "Standard" for a glitch category, which would theoretically include kill button & gate skip, while also having to track down all guards, and all bottle types, and any other collectible objects, like Sword.

For further symmetry of categories, since "All Levels" has been set up as a separate category for the non-%-related condition, another separate category could be made for "All Life Bottles," which would be a less strict "completist" category, involving only the 20 Life Bottles, while avoiding other unnecessary miscellaneous Big bottles, Guards, and Small Bottles, wherever feasible. This one could also be sub-divided by glitch vs no glitch.

I actually just started testing a new glitch sprite that Challenger found earlier this year, which might be perfect for routing "All Life Bottles." I will actually go ahead and start doing some preliminary work for this!


This should fit better with the 120 minutes. Unfortunately the game shows only the full 15 LPs on the bottom screen, so 100% should only get 11 LPs in the game (start 3 LPs free 1 on level 15).

United States

tasdasd, it really comes down to what the community agrees upon as the definition of 100% for a given game. Even if the game doesn't properly track progress or obtainable objects on-screen, we as a community can still make rules dictating what must be done.

Under your definition of 100% being to drink the minimum number of LPs to reach 15 health meter on-screen, the minimum number is Zero, because you can do an exit glitch on Level 8 to gain 15 bottles + Invincibility. lol.

Anyone interested in referencing that glitch can look up my obsoleted run in the Any% Standard category, 20m15s, and go to the 5:30 mark in the video.

Edited by the author 4 months ago
Game stats
Latest news
Latest (And Hopefully Final) Change of When the Run Starts

After the last rule change from May 30th, 2023 the runner @Akuma_apn has brought forth some compelling arguments as to why the run should start "on the first frame of the first active screen of the game (after the title screen)" (see ). As

14 days ago
Latest threads