Submission #8691: Hetfield90's Windows RosenkreuzStilette "Spiritia" in 26:38.17

(Link to video)
Windows
Spiritia
Hourglass-r81
95890
60
27131
PowerOn
RosenkreuzStilette ver1.05c JPN
Submitted by Hetfield90 on 10/20/2023 4:23:44 AM
Submission Comments
Hello and welcome to my second RosenkreuzStilette "Spiritia" TAS in 26:38.75. It is a 4977 frame(1 minute and 23.0 second) improvement over my first run from 2015, largely thanks to a new zipping glitch discovered about a month prior to this submission.

Encode

Sync Settings

   Game Version: JPN 1.05c
   Framework used: Hourglass-r81
       * Multithreading and Wait Sync: Allow
       * Graphics:
           * Allow Hardware Acceleration
           * Surface Memory: Local Video Memory
       * Sound
           * Format: 48000 Hz
           * Disable DirectSound creation
       * Runtime
           *App Locale: Force Japanese Locale
   OS Used: Windows XP 32-bit(Oracle VM VirtualBox)
   Checksum
   Virtual Machine dxdiag

Goals

  • Genre: Action
  • Genre: Platformer
  • Aims for fastest in-game time
  • Abuses programming errors in the game
  • Manipulates luck
  • Takes damage to save time

Overview

New Tech

As mentioned above, a new method of zipping was discovered about a month ago that blew this game wide open again for TASing. If you are sliding in a narrow slide chute and the ground gives out beneath you while there is still more ceiling above you, you can wedge yourself into the ceiling by jumping on the exact frame the slide would end. After that, pressing facing left will cause you to zip at an extremely high speed. Since the Eins item(rising platform) can create these parameters on any ceiling, there are new zips on every stage after acquiring it.

Stage Comparisons

Grolla(165 frames lost)
  • Since Grolla gives you Eins, the order of the first two stages is swapped in order to get Eins as early as possible. Not having Freudia's weapon, Freuden Stachel, does cost time in 4 different places on Grolla's stage, but having Eins on Freudia's stage will save over 3× that amount of time later.
  • Since Stachel is the only weapon that can be fired while sliding, there are two places where I have to sacrifice movement to kill enemies with only buster: I have to jump to kill the skeleton after the snake pit at the beginning of the stage before he fires hit shots, and I have to stand up for a frame to kill both zombies with one charged buster before the miniboss.
  • The miniboss takes an extra jump to kill with buster only compared to having Stachel.
  • It was a couple frames faster to do an extra jump to kill the skeleton up top immediately after the miniboss, vs doing 1 jump and getting animation locked as you grab the ladder.
  • The biggest source of the routing time loss was on the Grolla fight itself, since Stachel is not only useful for creating more efficient Doppler Effects with your charge shots, but it's also vastly superior to the buster for RNG manipulation.
Doppler Effects: Since Stachel automatically fires at regular intervals while holding down shoot, you can precharge your charged shots and just swap to Stachel for a couple of frames when you need to fire an uncharged shot and still keep your charge. This makes creating perfect Doppler Effects significantly easier and much less restricted by yours and Grolla's movement.
To create optimal Doppler Effects with just buster, you need to manipulate Grolla to do 1 backwards dodge while you're sliding away from her if you're doing only 1 charged buster, and to do a Doppler Effect with 2 consecutive charged shots, you have to manipulate her to do 2 consecutive backwards dodges while you're sliding away. Furthermore, the only way to get the proper distance from her during this strategy is to alternate between 2 charge shot Doppler Effects and 1 charge shot Doppler Effects every other time.
To make matters more difficult, your only tools for RNG manipulation are shooting extra lemons or jumping, both of which cost frames if you need to be sliding away from her to line up an uncharged shot on her, but can essentially be done freely without time loss as youre moving towards her firing charged shots. As such, Grolla went from being relatively easy to manipulate a perfect fight in the previous route, to being one of the most restrictive RNG manipulation hurdles in the run with this route. I had to sacrifice a few frames to manipulate the optimal pattern, but I am certain using Hourglass to start the game on a different system clock value could theoretically yield a slightly faster fight. Without any knowledge of how to do disassembly, however, this is far above my pay grade.
Freudia(937 frames saved)
  • A small improvement at the beginning of the stage comes from gaining instant full slide speed underneath the first slide chute. It takes chaining two slides together before you reach full speed in the snow, but while inside a slide chute you can just double tap slide to reach it instantly.
  • It's possible to do the first part of the out of bounds here in the old route since this is one of the few places in the run you can zip without Eins, but there is a stretch of fake ground in the OoB area that you'll fall right back in bounds if you don't have a way of getting over it. Using Zwei(item 2) to jet across would probably be faster than building an Eins bridge, but that would involve fighting Liebeia without Stachel which would be a huge time loss overall.
  • I was hoping bottom route at the end of the stage would be faster than top route since you can do a few zips down there and skip both boss door animations, but it wasn't even close. You lose far too much time from jumping over all the pitfalls, and there's no way to kill the bat before it opens without Liebea's or Trauare's weapons. Furthermore, as a general rule, using Eins to do a zip through the ceiling just for horizontal movement is slightly slower than just sliding along the ground. When zipping through a ceiling, you gradually fall out of it if your entire hitbox isn't inside the wall/ceiling, so the higher you start the zip from, the longer the zip will last. And when using Eins to do a ceiling zip, you have to place the Eins low enough for Tia to stand on top of it for one frame, and then wait for the Eins to rise up high enough while Tia's sliding on it to get her high enough into the wall to get a decent zip distance.
  • I expirimented with a new Freudia fight strat that seemed like it had potential to save time, but ended up being impossible. The current fight that uses 9 charged shots and 1 lemon is bottlenecked on charge time, but an alternate strat that uses 8 charged shots and 4 lemons would be bottlenecked on boss iframes. You can make the 4 lemon fight faster by chaining frame perfect jumps before the fight to start much closer to Freudia and hit her sooner with your first shot, but there's no way to do this fight without getting hit by one of her attacks since you're much more restricted on movement keeping her under constant iframes. The current strat doesn't benefit from hitting her sooner at the start of the fight anyway since you're bottlenecked on charge time regardless.
Liebea(137 frames saved)
  • The Eins route on this stage had to be changed up slightly to facilitate the new zips. The 2 Eins in the room between the two crusher rooms with the spear knight and sliding skull that the published run doesn't save enough frames to warrant spending an extra 18 frames on picking up a big ammo, so they just ended up being cut.
  • The zip at the end of the stage saves a lot of time not only because it takes a more direct path, but primarily because it skips a boss door animation. Each boss door animation takes over a second for it to open and close, and should be generally be skipped under almost any circumstances.
  • There's a one frame window to jump out of a zip if there's no ceiling above you when the zip ends, which is very useful here for grabbing the ladder higher up at the end of the stage. When not jumping out of a zip, it's generally best to jump a few frames before the zip ends in order to start incremeneting your downward speed to reach the ground 2 frames sooner.
Luste(183 frames saved)
  • The last screen was the trickiest to optimize here. Since you come into the screen lower than normal from the zip, you have to manipulate all high Stachels to kill the airboy as quickly as possible to stop him from blowing you back. While holding down the shoot fires Stachel in a uniformally oscillating up-and-down pattern, this fires them much less frequently than mashing at 20hz. The first shot of a Freuden Stachel volley is random, and can spawn low, middle, or high, so it took quite a bit of manipulation to get a quick kill on the air boy.
  • Since the zip causes the movement at the start of the last screen to be much faster, you end up being much earlier on the platform cycles as you're going across them. Because of this, the first platform is too high up when you're jumping off it to fit 3 Eins on screen after in order to land on the right side of the next platform with the skeleton on it. Instead you just make 2 Eins, land on the left side of the skeleton, and then jump over him. This is slower movement, but it's still faster overall than just waiting for the platform cycle to reach the point where you can make the triple Eins bridge.
Zorne(315 frames saved)
  • The first screen with the single met after going back into the mountain looks like it has a prime spot for a zip, but for some reason zipping into that wall just kills you. The only other place I've observed this is when trying to zip into moving crushers, so I'm not sure why it happens here.
  • At certain heights in the ceiling, pressing jump on a specific frame will allow you to stay zipping for one additional frame, which can save you some time of not having to wait as long for Eins to get you closer to the ceiling before the zip. This allowed me to save 1 frame by zipping through the pillar in the long underground Zorne bots room.
  • Not being high enough for the zip at the end of the stage will cause you to slide down like a normal ceiling zip into the instant death lava in the boss corridor. But if you're high enough to have the bottom of of Tia's feet completely in the wall, you don't slide down at all.
Schwer(235 frames saved)
  • The Zwei route at the end of the stage only ended up being about 5 frames faster than going immediately back in bounds after the zip. Jumping off a Zwei at max speed allows you to keep slide speed while falling down, but you lose the speed that you get from the forward facing conveyor belts down below. And added side effect of this route is that you skip a trigger that takes away the Mario UI, which means the all the mets in the long conveyor belt room can drop the useless red items when they're not supposed to.
  • The zip before the fight prevents you from precharging the your bomb in the prior room, making the fight itself slower, but the zip saves so much time on movement that it's worth doing anyway. Wedging yourself in the block near the ceiling at the start of the fight simply allows you to spawn Schwer sooner, without costing any time in the fight.
Sichte(211 frames saved)
  • There are essentially 4 sewer routes I had to test: top>top, top>bottom>, bottom>top, and bottom>bottom. Doing top route for the first half is faster than bottom route regardless because you skip a lot of fighting against the water current when zipping through the ceiling, but you especially can't do bottom route in the first half when doing a damage route for Grollschwert's desperation mode since you can't avoid the health down there and taking 2 damage from the water droplet in the previous room is nearly free. I wasn't expecting the top route in the second half to be faster since it takes a while to set up the bomb explosions to do the zip, but since you carry the zip so far into the next room it ends up being faster than bottom route by a slim margine.
  • Unlike normal walls which zip you horizontally, bomb blocks zip you straight upward.
  • It is possible to skip the turtle mini boss with a ceiling zip, but it's slower than just killing him since he dies almost instantly. He also is the only enemy in the stage that does 6 damage, so you want to take a bonk from him for the Grollschwert damage route anyway.
  • Since the 5 damage you can take while setting and doing the Zwei zip at the end costs no time at all, this made setting up a Grollschwert damage route to do a 2hit boss fight faster than a 3 hit fight with no damage route. With the water droplet at the beginning of the sewers only costing a small number of frames since you're falling anyway during the stun animation, the turtle miniboss bonk is the only timeloss you have to straight up eat, causing the whole route to save about over half a second.
Trauare(900 frames saved)
  • This appears to be some sort of unused dev room that you zip into at the start of the stage.
  • Incredibly, the top route of Trauare's stage, which I didn't even know existed for the multiple months I was speedrunning this game, ended up being around 2 seconds faster than bottom route. And the only thing that needed to happen for that to be possible was to use 5 zips to skip the vast majority of it.
  • Unfortunately, you can't start with a charged shot on the boss after zipping through the boss corridor. You also can't do the Zwei trick used on Sichte's fight either since the screen transition eats your input the frame you would need to jump on in order to ascend out the zip. That trick is only possible on Sicht'e and Raimund since their boss rooms have invisible screen locks on the sides instead of actual walls.
Fortress Ammo Route(164 frames lost)
  • Because there's so much more Eins and Zwei needed to do all of the zips and OoB movement in the fortress stages, you have to spend a lot more time now refilling your ammo. Since ammo refills can be moved around to different stages in some cases, I subtracted the frames spent acquiring them from each fortress stage and consolidated them to a separate total value instead.
  • The way ammo refills work is a little weird, since the animation deccelerates the longer it goes on. Small ammos always take 1 frame per tick, but big ammos take an average of 2 frames per tick. The first two ticks are always 1 frame per, but the later ones can take as many as 5 frames each. My first TAS was optimized by simply manipulating a small drop from nearly every enemy in the fortress stages, but you need so much more ammo now with zips that you have to take a decent number of big ammos. Because there's no avoiding them, you ideally want to route them in so you grab them you have 20 or more ammo. That way you get the quick refill ticks at the start of the animation, but skip the slower ones near the end. This wasn't possible to do for every big ammo, since there are many situations where you have to spend more than 8 Eins or Zwei ammos without any enemies to refill in between.
  • The way RNG works in this game is that you get a cluster of 624 values seeded based on your system clock timer at the beginning of each stage. After using up all those values during a stage, the game will give you a new cluster which isn't based on your system clock. Instead, it will always be consistently the same set of values regardless of how quickly you used up the previous cluster in a stage. But because the first cluster is based on system clock, any improvements made to earlier stages or changes to the ammo route that effects earlier stages will be impossible to resync. This made the the ammo route by far the most tedious and time consuming part of the run, especially since big ammos have only around a 1% drop rate.
Sepperin 1(5 frames saved)
  • The zip under the turtle in the first room of the tower was the only improvement on this stage. Since the only weapon you can kill him with while having an Eins out is Geister Wand, which needs to be refilled for the refights anyway, the 2 ammo you could get from him is irrelevant the route since it just refills what you had to spend to kill him.
Sepperin 2(232 frames saved)
  • The blocking the met before the long Zwei room's shot with Geister Wand so you can use his platform to jump off of ended up being 1 frame slower movement, but you save 2 total ammo by only needing 1 Eins instead of 3, making it faster over all.
  • The Poltergeist fight seems like an auto scroller in real time runs, but it actually one of the most heavy RNG points of the run in a TAS. The amount of time it takes for the glass shards to conglomerate after the window breaks varies by around 10-15 frames each cycle from best to worst pattern.
Sepperin 3(119 frames saved)
  • The ceiling zips in the first room causing you to miss out on the ammo drops from the enemies on the floor actually complicated the ammo route quite a bit. You ideally want to refill 16 Zwei ammo in between the Sepperin 2 and Sepperin 3 Zwei flights so that you're not wasting extraneous Zwei ammo after you jump off of it, but there's only 1 enemy in your direct path now with zips. Initially, I was grabbing a small from each of the 2 zombies in the second room and then using Geister Wand to get the last bit of ammo from a floating cross mid flight, but this cost a decent chunk of frames, both from having to do suboptimal movement to grab the ammo off the second zombies in the second room, and from having to refill the 2 ammo from the Geister Wand I spent later on. Since you need to pick up big Zwei ammos now in the route anyway, it's better to just pick one up from the first zombie in the second room and waste a little bit of the extra ammo after you jump off the Zwei at the end of the flight.
  • This stage was the most prime real estate for doing much of the big ammo refilling in the run, not only because there are so many enemies over a long stretch of flat ground, but the crumbling platforms advance RNG fairly quickly, doing much of the manipulation for you.
  • The skulls in the the way of the small zip in the middle of the stage need to be killed quickly before their fire breath goes off. Thankfully, this means their potential ammo drops fall to the ground before you have a change to pick them up, because I certainly didn't want to have to manipulate ammo from them with Eins out preventing me from doing any manipulation in between.
  • Since you can't start with charge shot on the fight after zipping into the room, I wanted to use the same Zwei trick from the Sichte fight to get a quicker first hit, but there's no way to avoid getting hit when you do that and you're all the way across the room from the scythe when you need to do the second hit.
Sepperin 4(953 frames saved)
  • It's pretty wild that the zip route in this stage has you going back and fourth between top route, then bottom route, then top route again.
  • There were a couple of different methods I tried to go through the long Zwei room in the bottom route. The first one involved dropping down into the room immediately, jumping off an Eins, and menuing it off in order to get on top of Zwei immediately. This saved the time of having to wait for 2 Zwei accelerations. The second method involved doing the OoB Zwei and then using the platforms to go over the spear knight. Luckily however, it ended up being possible to take the 3 necessary damage you need for the Grollschwert route from the floating cross while waiting for the Zwei to accelerate without falling off the platform, because you can then use those iframes to go through the spear knight instead of having to go over him. This was absolutely crucial to the route here, since the cross you normally take damage from here gets skipped, and everything else that does exactly 3 damage needs to be farmed for ammo.
Iris 1(342 frames saved)
  • While Tia does have god-tier level powers of RNG manipulation, even they are no match for the astronomical improbability of the Bosspider god pattern. To get around this, I had to use the stage itself to help with manipulation. Entering and exiting water at different RNG values will actually drastrically increase or decrease the amount of values that are polled to make the water splashes. Rain and bombs also do an insane amount of rng polling, but you don't have any spare ammo for those in the route.
  • The Bosspider god pattern is a 2-part god pattern, with each cycle having its own god pattern. The first cycle needs meet several conditions: Bosspider needs to go straight down without crossing over until she's low enough for you to hit her with Freuden Stachel, and she needs to cross over exactly 3 times to give you just enough time to get 3 hits in, and she needs to end up next to a wall. Since she always starts on the 3rd thread, the only possible permutation for this is for her to go right->left->right. The reason she needs to end up at a wall is because when you can hit her at the beginning of the second cycle is bottlenecked by the fact that you can't fire any other weapons while you still have an Eins out on screen. Therefor, you want to fire your last shot of the first cycle as early as possible from all the way across the room so you can subsequently get your Eins on and off the screen as quickly as possible.
The second cycle god patterns has different restritions, but still very rare ones nonetheless. Because Bosspider is moving so much faster in desperation mode, it now requires 5 crossovers to keep her on screen long enough to get 3 hits in instead of only 3 crossovers like the first cycle. You also want her to start on the 3rd thread again, and then go left on the first crossover. And lastly, you need her to not release any broodlings at the start, which kills half of your potential patterns anyway. You may notice the pattern I took did not meet all of these conditions, since she started on the first thread instead of the third. But since the first cycle's god pattern is significantly less probable than the second(I think), and I couldn't find a different one anywhere in the remote vicinity of this RNG, I took a 2nd cycle that was only 4 frames suboptimal since there weren't any god patterns within the limited amount of RNG values you can hit between cycles. The time loss comes from having to wait for Bosspider to cross over you at the start so your first shot doesn't hit her point blank.
Iris 2(317 frames saved)
  • While you can't start a zip during an upside down gravity section, since Eins and Zwei are always upright regardless of Tia's orientation, you can use the upside down gravity to a few zips in subsequent upright sections. The one before the OoB requires two Eins to pull off because of how quickly you approach it at terminal velocity. You need one Eins that's high enough to set up the zip quickly as well as one lower Eins to land on beforehand.
  • It's actually possible to skip the last upside down gravity swap at the end of the stage by doing the zip beforehand high enough in the ceiling. This ended up being slower since the bombable blocks make it impossible to jump out of a zip you would want to do at the end, making you just fall in the pit.
Iris 3(244 frames saved)
  • The one zip near the start was basically the only improvement I could find to the stage. The 4-uncharged shot Freudia strategy I tried in the first fight was even less viable here because there's no way to start the fight closer to her without losing a significant amount of time.
  • Sliding out of the zip is generally slower than just falling, since it forces you to zip for one less frame than you would otherwise, but doing so allowed me to get the height necessary to dodge the shield met after the OoB section.
  • As far as skipping the entire boss rush with zips is concerned, I'm pretty sure it's impossible. The Iris Machine room itself has another boss room directly over it that makes it impossible to fall into from OoB. I was able to get to the to get directly to the side of the room and below it, but without a way to zip into the floor(you can generally only zip into ceilings) of the boss room above it, I don't see any way for it to be possible.
Iris 4(176 frames saved)
  • Skipping both boss doors was the bulk of the time save on this stage, but I also saved a few frames by manipulating a higher spawn for Iris's last cycle. The higher she is, the shorter it takes for her to go up off the screen and back down to start the final cutscene. This only saves in-game time, and not TAS timing.

In Closing

Possible Improvements

  • Use disassembly to find a system clock start value that facilitates an optimal Grolla pattern which doesn't require any frame sacrifices to manipulate.
  • Slide along the Eins for a few frames in the pre-checkpoint outside screen on Liebeia's stage to allow for a higher ladder grab.
  • The Eins zips are very difficult to optimize, both the Eins movement leading up to them to get the perfect height as well as figuring out the perfect distance to zip with them. It's probably possible to save a frame or two on a few of them.
  • Find the double god cycle Bosspider pattern that I got in my first TAS.
  • Omit the rain used to kill the bat in Sepperin 2 and manipulate a big ammo for 4 Eins from the subsequent met. This will allow for the shield met after the OoB in Iris 2 to be killed with rain so you dont need to air slide over him.
  • Find a boss rush skip?(I doubt it)

Acknowledgements

  • Harutta: Discovered the new zipping glitch that made this improvement possible in the first place.
  • Nitroz: Made a play list of a couple of the places where the zips were useful before I started working on the TAS, most notably some of the bigger sequence breaking ones in Trauare and Sepperin 4.
Lastly, while I was aiming for in-game time, I couldn't actually get the score screen to come up after the ending credits without hourglass crashing, so I have no idea what the actualy in-game time of the run is. So if anyone is able to get that screen to come up and can upload a screenshot of it, and the replay file(.rpy) as well, that would be greatly appreciated.
Also, if anyone can try to figure out how to get rid of these graphical glitches present my submission encode, that would also be appreciated: 1. Black boxes around enemy debris and Luste's speech bubble 2. Most particle effects are extremely pixelated 3. Full-screen fade ins/outs don't appear These same graphical glitches were present in my 2015 runs, and the consensus seemed to be it was because I was using System Memory for the Surface Memory setting in hourglass, which couldn't be changed because it had an effect on sync. I get the same graphical glitches in Windows XP regardless of whether I'm running the game through hourglass or not, and regardless of what graphical setting I'm using(I was able to get the run to sync with System and Local Memory). I also get them while running the game through hourglass in Windows 10, regardless of what graphics settings I'm using. Basically I have no idea how to get rid of the graphical glitches but I know it's possible since Bernka's runs didn't have them, and would appreciate any light anyone can shed on it.
Suggested screenshot(frame 39985):

feos: Claiming for judging.
feos: We couldn't sync this, but maybe someone else with compatible hardware can. Delaying for now.
feos: nrg_zam's encodes can serve as sync verification, and they are also good for encoding, so I think it's safe to accept this run over [3045] Windows Rosenkreuzstilette "Spiritia" by Hetfield90 in 28:01.15.
feos: Forgot to replace the movie.

despoa: Processing...
Last Edited by despoa on 12/24/2023 9:55 AM
Page History Latest diff List referrers