Submission #7743: scrimpeh's NES Castlevania III: Dracula's Curse "Grant path, warp glitch" in 14:18.24

(Link to video)
Nintendo Entertainment System
Grant path, warp glitch
BizHawk 2.6.2
51579 (Cycle Count 4608138703)
60.098899002259465
77191
PowerOn
Castlevania III - Dracula's Curse (U).nes
Submitted by scrimpeh on 10/14/2022 7:44:14 PM
Submission Comments
Castlevania III: Dracula's Curse is the third installment of the Castlevania series for the NES. It was released by Konami for the Famicom in 1989 and details the epic quest of Trevor Belmont and his companions to vanquish Dracula once more. This movie completes the game as fast as possible by triggering a wrong warp to reach the final stage early, and saves 672 input frames, or around 11.2 seconds, over the previous submission through the use of new strategies.

Game objectives

  • Emulator used: BizHawk 2.6.2, NESHawk Core
    • Due to changes in the power-up state emulation, this run will not sync on any more recent versions of BizHawk, including 2.6.3. The run will desync shortly into stage 1 due to getting a wrong item drop. The run has been resynced to BizHawk 2.8 thanks to Alyosha!
  • Takes Damage to Save Time
  • Uses Death and Game Over to Save Time
  • Manipulates Luck
  • Genre: Platform

Comments

This is Castlevania III: Dracula's Curse, the game so nice I had to TAS it thrice. This is an improvement of 672 frames (11.2 seconds) over the previous run. However, the final stage ends only 465 frames (~7.74 seconds) faster due to a different final boss strategy. More on that later.
I once again pick up Grant in the Clock Tower before heading into the swamp, where I perform the fabled wrong warp to make it to the final stage early. The overall structure of the run is similar to before, but I have a few new tricks and strategies up my sleeve. In particular, there are three significant changes to the run:
  • I force an axe drop in the beginning of Block 1, which allows me to pick up the Holy Water without slowing down. This saves 47 frames.
  • I perform one additional launch with Grant in the clock tower, courtesy of SBDWolf, saving 180 frames.
  • The Dracula fight has been subtly altered. You'll know it when you see it.
If you're strapped for time and just wanna see what's different, go check out those parts. For everyone else, allow me to elaborate a bit on the details.

Tricks

Subweapon Canceling

By pushing the attack button on the right frame, the animation for projectile attacks can be skipped. Grant's attacks can also be interrupted by touching a wall or a ceiling.

Skipping Forced Crouch

By attacking on the right frame while in midair, you can skip the forced crouch animation when landing from a high ledge.

Launching with Grant

This trick was originally found by KutsuShita. By attacking with Grant while in mid-air and touching a right wall for exactly one frame, Grant is warped upwards by 128 pixels with a high amount of vertical momentum. If Grant's Y position on screen is less than 128, Grant will wrap around and appear on the lower half of the screen. If you perform a launch in the wrong place, Grant will appear below the screen edge and die. This trick is exclusive to the U version of the game.

Entering Ceilings

Jumping into a ceiling will add 32 subpixels to Grant's horizontal position, irrespective of any walls in his way. This can be used to clip into walls by jumping into an inner corner several times. It is not possible to move right up to a wall to do it in one jump because Grant will try to cling to the wall. Instead, with optimal subpixel positioning, 5 jumps are required to get into a ceiling.

Horizontal Screen Wrapping

At the left or right edge of the screen, Grant can interact with walls on the other side. This allows him to wrap around the screen horizontally by pulling himself up or down a corner. This is normally not useful because it's hard to get to the edge of the screen quickly, but some exceptions exist.

Dismounting from Stairs

Using various character switching shenanigans, it is possible to disalign yourself from a staircase and clear the end of the stairs. You can then walk up or down the stairs into invalid rooms. If you proceed far enough into the glitched worlds, many strange and interesting effects can happen, from visual and audio glitches to memory corruption. By traversing the glitched worlds in a certain way, it is possible to trick the game into sending you into the final level early, skipping a large portion of the game.
I made a detailed writeup of how the wrong warp works in the previous submission. If you're interested, feel free to read up on it there.

Scroll Glitch (New!)

The scrolling and tile loading routine in this game works very similar to Castlevania 1. When scrolling horizontally, new level data is loaded into RAM in columns of 32*32 pixel blocks, starting from top to bottom, overwriting existing data as it goes. A block is loaded only on every other frame.
For Castlevania 1, it was discovered by InfoManiac that tile loading could be suspended by only moving the camera when the tile loading routine is not active. This would leave the tiles that were previously there in place, corrupting the level geometry. This could be abused for significant shortcuts in that game.
In Castlevania 3, in theory, the same vulnerability exists in the exact same way. By only scrolling the camera on the right frames, tile loading can be avoided. However, Castlevania 3 adds two failsafes that make things a lot more complicated:
  • After you let go of the D-Pad, your character will keep moving for one more frame.
  • After you stop moving, the game will load tiles for one additional frame.
This means that the scroll glitch is substantially more complicated and unintuitive to activate in this game. Unlike in Castlevania 1, you also cannot trick the game into skipping a block of tiles by turning around, as the game keeps track of how many blocks it has loaded in both the left and right direction separately. Ultimately, the method I discovered is this:
  1. Walk forward until the game wants to load a new block of tiles
  2. Turn around for one frame to trick the game into loading tiles in the other direction
  3. Turn back in the direction you want to go
  4. Pause for 3 frames to offset the tile loading timer
  5. You now get one free frame of forwards movement before you have to repeat the cycle
Overall, this method is much less flexible than the methods available in Castlevania 1 and much slower. When performing the scroll glitch, you have 1 frame of net movement in 6 frames, which rules out many of the shortcuts that would be possible otherwise, as they are too slow to go for. It also involves repeatedly and rapidly pausing the game, causing it to go DING-DING-DING-DING-DING while you're doing it, which is also rather less pleasant. Still, some applications have been found, and I'm happy to be able to present one of them in this run.
It is also worth noting that unlike Castlevania 1, visual tiles and collision data are not tied together when loading. You are only about half a screen away from the scroll seam in this game. This means that it is basically impossible to do this glitch without a map viewer. I've written a simple Map Viewer for BizHawk to be able to perform and explore the scroll glitch. It is quite rudimentary, but it does the trick.
Lastly, after the scroll glitch was discovered for Castlevania 1, I went around and tested a bunch of other NES games by different developers to see if they might exhibit a similar vulnerability to that game. Ultimately, my search turned out futile. There was only one game that also behaved similarly to Castlevania 1 and had a similar vulnerability. This game.

Stage by stage comments

Block 1 (Village)

As mentioned in the Deborah cliff notes already, the first stage immediately has a quite rapid departure from the previous run. I force 4 item drops from the enemies on the way to the holy water, which causes the fifth enemy to drop a random subweapon, which I manipulate to be an axe. I use the axe to pick up the holy water much faster than previously. This was slightly tricky, as enemies only drop an item on every 8th frame, but I was able to manipulate all the drops I needed without pausing. The second bat proved quite a nuisance however, as there is no way to kill it without slowing down. Ultimately, walking forward slightly to trigger it and killing it with a knife throw was the fastest way to proceed. I then pick up the axe from the next bat and use it to immediately destroy the candle, which saves 47 frames.
The rest of the stage goes by mostly as before. I eliminate some minor mistakes I pointed out in the previous run, which saves a few frames. In particular, I take more damage from the fleamen, which avoids some waiting. Then I roast the first boss again.
I hit a poor frame rule after the boss fight, but better RNG manipulation makes the flames disappear slightly faster, saving time overall. All in all, 64 frames were saved in this stage.

Block 2 (Clocktower Ascent)

Overall, not much has changed in this stage. There was some intrigue about the Fast Grant Orb Drop that you can read about if you're interested, but ultimately that turned out to be not worth it. That said, understanding of the glitch allowed me to manipulate the orb to spawn one pixel further to the right, which lets Trevor collect it from further to the right as well. This saves a frame during the ensuing cutscene.
In the process of testing things, I did also find a faster strat for Grant in general, which you get to see in this run. It involves staying much further away from him and pelting him with holy water from afar, which causes Grant to not attempt a jump. This makes Grant die closer to the floor, which saves a handful of frames. Overall, 22 frames were saved in this stage. The real star of the show however turned out to be the mysterious and highly coveted technique of 'Pushing the B button', which causes the fadeout after the dialogue scene to start earlier. Careful usage of this forbidden technique saved 178 frames. This is actually beginning to feel like a speedrun now.

Block 2 (Clocktower Descent)

Immediately at the start, I throw a holy water to get rid of one heart and then switch to Grant. This loses 2 frames, but I make up that time at the heart countdown at the end of the stage, saving one frame overall. The position of the Medusa Heads in the next room depends on the value of the framecounter. Like in the previous run, I pause briefly to manipulate them to stay out of my way while minimizing lag. It also turns out that holding Up tends to cause the game to lag, so I avoid that.
The second room of BLK 2-05 features the new launch, which was kindly pointed out to me by SBDWolf. The launch simply flips the high-order bit of your Y position on screen, so it was important that I let the camera scroll down far enough so that the ledge is high enough for Grant to appear in the lower half of the screen without dying. The route you see me take to appraoch the ledge ensures the camera is in the right place. This launch is the reason I originally wanted to redo the run. The rest of the stage goes by mostly as before, with only minor improvements.

Block 3 (Mad Forest)

The owls have a slightly different pattern in this run. They seem to spawn in groups, and it seems like their behaviour is determined by what frame the group as a whole comes on screen on. While I had to adjust my strategy slightly, I was able to make it through in the exact same amount of time as in the last run. The rest of the stage goes by exactly as before.

Block 4 (Swamp)

Once again, I execute the wrong warp like in the previous run. I experimented with a few different shortcuts, such as avoiding or delaying certain character switches, but all changes I tried would cause the wrong wrap to fail later on. Ultimately, I saved a few frames from slightly better strategy in the merman room. I also switch to Grant immediately in the final room, which causes him to fall at maximum speed instantly, ending the stage faster. There were some other leads that didn't turn out fruitful. You can delay killing one merman until later to get an extra life after the game drains your lives to 0, avoiding the Game Over screen later. However, it turns out the Game Over screen takes exactly as long to clear as just sitting through the normal Death screen, so I didn't go for it. You can also avoid the forced damage from the bone pillar later on by waiting for some frames in the previous room, changing the subsequent rooms you get. However, the time it took to wait turned out to be much longer than the frames lost by just taking the hit. Ultimately, 12 frames were saved in this level, and we enter the final stage 455 frames ahead of the previous run.

Block A (Final Approach)

While the autoscroller is active, reducing lag is once again imperative. It turns out pulling yourself up and down a corner causes the least amount of lag, so I do that whenever I can. I need slightly fewer hearts than last time this time around, which is helpful. For this reason, I prevent a bat from spawning in the pendulum room by scrolling the camera in a specific way, which also helps to cut lag. We finally reach Dracula, 466 frames ahead of the previous run.

Dracula

Since I need fewer hearts, I can destroy a candle with an axe instead of jumping for it, which saves a few frames.
What immediately follows is an application of the scroll glitch. By turning around and pausing in a specific rhythm, I prevent some of the previous tiles from deloading, glitching the layout of the arena. Grant now has a raised ledge to grab on to right next to Dracula. If the visual tiles corresponded properly to the loaded level data, it would look like this:
This in itself loses 111 frames, but I can now use the wall to instantly cancel my attack animation, allowing me to attack Dracula much more frequently. The best strategy is generally to hang on to the wall, drop down and attack, and immediately grab the wall again once the attack has connected. This allows me to finish Dracula 1 faster, making up 28 of those frames already. Annoyingly, the game often likes to drop inputs when there is a lot going on, repeating the button presses from the previous frame. This poses a significant problem in this fight, as there are a lot of very precise inputs required in a short amount of time. Often, redoing the previous 10 - 20 frames and changing your actions slightly will avoid the dropped input frame, but it makes this fight much more tedious than it needs to be. It is also worth mentioning that the game has a limit on damage stacking. Connecting with multiple attacks simultaneously will often reduce the damage inflicted, and stacking more than two sources of damage in the same frame will cause Dracula to not take any damage whatsoever. This needs to be taken into consideration when fighting him. Often, you want to offset your attacks by at least one frame to avoid the reduced damage.
Starting Dracula 2, I stay below the low ceiling to cancel my knife attacks faster by jumping into the ceiling. I then climb down the corner to the right of me, which causes Grant to slightly clip into the wall. I then take damage from Dracula. Because Grant is partially inside the corner, he touches the ground earlier, allowing me to start attacking again faster. I then use the invulnerability time to stick as close to the boss as I can and use the wall to attack as fast as I can. However, if the fight drags on for too long, the altered geometry turns from an advantage into a serious hindrance, as Dracula flies out of stabbing range from the wall, and it's not convenient to hit him from the raised floor. The upper right head is particularly problematic, as it will be on the far side of Dracula's hitbox, where it can be damaged only very slowly with axes. Additionally, it can be difficult to damage the head you want, because the game will always prioritize certain heads over others as long as they're alive.
I therefore abuse the property that while each individual head has 13 HP, their combined hit points is only 64, i.e., one less than 13*5. As soon as the shared hit points are decreased to 0, the boss dies, even if one head is still alive. This allows me to open with two axes against the upper right head, doing 6 damage immediately. I can then drain the HP of all the other heads, and need only two more axes against the upper right head to drain the total HP of the boss to 0. All in all, this allows me to finish the fight 77 frames faster. I could kill the boss a few frames earlier, but one of the fragments would then fall through the gap under the glitched floor, wrapping around the screen vertically. The fragment takes much longer to disappear then, so I delay killing the boss slightly.
Finally, we move on to Dracula 3, which is the most significant departure from the previous run. Starting with the second hit, I make use of the above ceiling to consistently stack one knife and one axe with every hit, doing 6 damage with each hit. I need to avoid Dracula's lasers while I'm doing this. It turns out that the length of his laser is always 5 segments plus the value of the framecounter at the frame the laser spawns modulo 4. This means that his lasers will always be between 5 and 9 segments long. The longer the laser is, the more lag it causes. I therefore wait a few extra frames before finishing the previous phase to ensure I get the shortest possible laser. Afterwards, I pause the game for a few frames to manipulate the next laser to also be short. Like in the previous run, I manipulate his lasers to go straight up or down to disappear as quick as possible. All in all, this allows me to drain Dracula's HP much faster than in the previous run. However, the real advantage comes after the end: Because I can grab onto the ceiling, I can reach the moving platforms much earlier, ending input much faster. Overall, input ends 672 frames earlier than in the previous movie. However, because it takes equally long for the platforms to reach their destination, the actual orb grab is only 465 frames faster than the previous run. While the platforms disappear slightly earlier (around 13 frames earlier), the orb takes longer to appear, canceling out the improvement. This means that I essentially sacrifice in-game time for TAS time. However, because this strategy is so radically different from the previous run, I do believe it is well worth showing it off regardless.
At last, Dracula is vanquished once more, and the game ends.

Other comments

I originally started this TAS in July 2021. Between stumbling across the scroll glitch and stopping to investigate it and some other things that happened during this time, it's safe to say that this run got a fair bit delayed. I'm frankly quite happy to finally have it off my back.
I believe that if you try hard enough, you can improve this run by some frames here and there through better subpixel manipulation with Grant, boss strategies and other minor improvements. I also still cannot rule out that you don't actually want a triple shot against Dracula, with the scroll glitch or without. However, the true future for this category likely lies in finding a new and faster wrong warp. The current warp has in a lot of ways become the bottleneck of this run, crazily enough. It's been largely unchanged since its discovery, takes forever to get to and forever to execute. The scroll glitch opens up a ton of new possibilities for where you can enter the glitched worlds, and I expect a faster wrong warp is lurking in there somewhere (note that it's also worth considering the J version for this again). However, due to the increasingly tight time constraints I find myself in, I likely won't be the one to find it.
Nevertheless, I hope that you enjoy watching the run. It's been quite a journey to make. I'd like to give special thanks to SBDWolf, who pointed out the new launch to me. I'd also like to give thanks the people in Castlevania speedrunning Discord, including (but not limited to) Spriven, KutsuShita, Challenger, Burb, Crunan, jc583 and others. I'd also like to thank previous TASers of this game, also including (but also not limited to) zggzdydp, Sanhaim-Grim and Bablo. Massive thanks also go out to Alyosha for undertaking the work of resyncing the run to BizHawk 2.8. Finally, thank you very much for making it this far, and if you have any questions about the run, I'll be happy to answer.
-scrm

feos: Claiming for judging.
feos: Replacing the movie with a 2.8 resync. NES cycle count in 2.8 is irrelevant anyway, it s only asking for it due to a bug, will be fixed in 2.9.

EZGames69: Processing...
Last Edited by EZGames69 on 11/2/2022 9:32 PM
Page History Latest diff List referrers