If it is a Classic G-Ending run, you can submit to whichever one you want. If it is a Rewind mode run, you submit to the one where at least one run has been posted.
The moderators that created the leaderboards made two G-ending categories by mistake for both Classic and Rewind modes, they have to eliminate one of the duplicates.
There are two, one called The Barrows Mansion, which is the Clock Tower general discord, and there's the Clock Tower Speedrunning discord.
The Barrows Mansion: https://discord.com/invite/G8x6kgstVS
Clock Tower Speedrunning: https://discord.com/invite/6J2ry7J
All good Akuma; now that I have a better recording equipment, I should do a better run. Then again, it's been so long since I've done runs...Also, need to put in use that autosplitter for 100% to do a better run there...
Ah, thank you for letting me know. Right now the Discord is called ''Nesdraug's Crypt of Games & Romhacking'', but it has a channel for this Pepperland hack. I'll update the link with a 30 day time limit expire date because the server is not a community one, otherwise we could put permanent links. https://discord.gg/GAFKQRv9k
Congrats on your first ever speedrun! Hope there's lots of improvements along the way!
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)); } } }
I asked David at the princed forum if inside the code there was something that would kept track of the potions and guards. And this is what he had to say:
''These are kept track only for the current level, so a potion you've already drunk won't reappear and such. They are reset when you restart the level.
The level objects (including potions) are stored starting from RAM address 7F:E170, on 24*30 bytes (one byte for each tile of each room). When the player drinks a potion, the corresponding byte changes to zero.
For example, consider the first potion on level 1, under the green guard. It's in room 8, at tile 27 (row 2, column 7), so its RAM address is 0x7FE170 + 8*30+27 == 0x7FE27B. (This calculation assumes that rooms, rows, and columns are all counted from 0, as in Pr1SnesLevEd.) When that byte changes to 0 (from 0x12), you know the player picked up this potion.
In an AutoSplit file, that offset translates into this:
byte Potion_1_8_27 : "snes9x-x64.exe", 0x008D8C38, 0x1E27B; // 7F:E27B
(Assuming you are using snes9x-1.60-win32-x64.)
The final offset is calculated as: 0x7FE27B - 0x7E0000 = 0x1E27B.
Now of course you need to check if the current level is level 1 before checking any potions on level 1.
Here is the AutoSplit offset for the current level:
byte CurrentLevel : "snes9x-x64.exe", 0x008D8C38, 0x0579; // 7E:0579
He will try to find something related to the guards.
Yes, kill potion respawns if you die (just like every other potion), so if we go by that logic, we should skip it. That being said, if the objective includes to drink every single potion at least once, then probably this one should be included as well.
I really think there's no solution for a deathless Level 11 besides that gate glitch Akuma suggests, but that is considered a major glitch.
I tried to route a complete Level 11 solution, but the closest one is this one where all guards are killed and all but that heal potion can be taken.
I do agree on that GMP; even on the run I did and submitted here almost a week ago (which I'm bumping again here so the category is created), I retook everything whenever I died unintentionally. The only issue this 100% has is that two deaths will have to be intentional; the first of them because we cannot grab one of the heal potions without redoing the level, and the second one because it's a kill potion (this one is after the checkpoint and one cannot go back).
Sadly no, the game doesn't keep track anywhere of the stuff you grab except for the life potions after each level (and checkpoints too, though each level that has checkpoint makes sure you cannot go back, probably to prevent grabbing infinite life potions). Unless we make a sort of external image checklist, we might have to abide by getting them without dying (except for levels 11 and 18).
I was considering that possibility given that we have to allow at least two intentional deaths for the 100% to be possible. I was under assumption that PoP1 DOS had this rule of retaking everything if a death happen but it seems that it's not there. It would certainly make it easier and have more possible runs submitted, and maybe some strats can be developed by dying/using game end. I'll leave it to the moderators to decide this, but I'm fine either way.
Well, after a sort of first full test run, here's my first submission so the 100% category is created. Everywhere I unintenionally died, I re-grabbed every potion and re-killed every guard. The only intentional deaths were on Level 11 (after killing the second red guard) and the Kill Potion on Level 18. With no unintentional deaths and less sloppiness, sub-1 hour is doable, but barely (at least within my skills). I'll keep improving it until I get a 'no unintentional deaths' run and see how close I can get there.
Well, I have been routing both categories to soon submit runs for them, and while All Life Potions has pretty much no issues in completing it, the 100% on the other hand has a couple of levels that makes a deathless 100% impossible.
The levels in question are 11 and 18. I explained and proposed a solution for 18 in a previous post here, so I'll focus on the only other level that also has a similar issue.
Level 11 has a heal potion that can only be accessed and grabbed from the top side, and if taken, it makes at least two red guards and another heal potion impossible to grab as the gates to access them are closed.
Here I enclosed the problematic heal potion:
My proposed solution is a similar one to Level 18's Kill Potion, in that we drink that potion once, get killed, and kill/take the remaining guards/potions.
Perhaps for this category, we could allow that as long you have killed/defeated every guard and have taken every potion once, it counts.
Oh true, I was counting that extra one by mistake, but you technically get it when merging with the shadow. But yeah, 20 All Life Potions should be a category; and an extra sub-category where we allow kill button for 21.
And 100%, will have to be to kill all the guards (knock the immortals once at least) and drink every single potion in the game (Life, upside-down, healing, poison, warp and kill potion - once at least for this last one so that it counts). We could also have a sub-category with kill button so it allows killing those immortal skeletons.
All in all, we might have to do two separate categories like the DOS version, one with major glitches/kill button allowed and another with No Major Glitches (NMG).
Deathless might be an optional one, because optimally, in the NMG one you wouldn't want to die anyway.
I might consider to take it back if there's more new strats/tricks to implement (no warps of course, that's a different category); there were a few guard jumps and tricks from that 33:31 TAS that I had to do differently because the timing was quite tight (not frame perfect I believe, but still really tough).
For a few months now I have been tinkering on the possibility of maybe having these two categories on the leaderboards.
The All 21 Big Life Potions seems like a good enough category to try, given that in the optimal Any% run, you might not even grab a single potion, so going out of your way to take them all will certainly add a different spin and routing speedrun-wise.
100% category, I feel would be very interesting and challenging to try, because, in my mind (and based on the existing 100% PoP1 DOS category), 100% would be to kill all the guards, defeat at least once the ones that are immortal and cannot be knocked off-screen/killed by a trap and drink all the potions in the game (including the warp and kill one, the latter only needed to be drank once). It's quite a lengthy challenge, but one that I think might be fun and worthy to do runs.
There is some interest by at least a few runners for both categories, so maybe we could consider add those categories to the leaderboard after completing a run for each.