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...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15628
Location: 127.0.0.1
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3576)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Anytime Grant is involved, it's a big yes from me. This was really entertaining
It's hard to look this good. My TAS projects
Active player (317)
Joined: 11/16/2020
Posts: 11
Very nicely done, that Dracula fight in particular is just amazing. It's great to see an application of the scroll glitch in this game and in this branch.
Reviewer, Skilled player (1020)
Joined: 11/18/2011
Posts: 320
Location: Morocco
Published run already great, and this one is better, so it is super great! Very good run as usual from scrimpeh! Easy Yes Vote!
I still learn more about English. https://www.youtube.com/user/McBobX100
I wrote:
Working is the best way to achieve goals in speedruning. Hardworking is a pain.
Challenger
He/Him
Skilled player (1702)
Joined: 2/23/2016
Posts: 1065
Always cool to see an improvement for this game, and as adelikat said, this run was really entertaining. I'm glad the scroll glitch works in this game too, and good thing this glitch is actually useful (at least once) for this category. That Dracula fight was great. Also nice job with the first level - that item drop manipulation was clever. Yes vote for me!
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Fortranm
He/Him
Editor, Experienced player (879)
Joined: 10/19/2013
Posts: 1122
It's amusing to see improvements keep being found for this category. Yes vote. I wonder how many of these new finds are applicable to [1979] NES Castlevania III: Dracula's Curse "Grant path" by scrimpeh in 28:35.19, assuming the JPN version is still being used.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3827)
Joined: 11/30/2014
Posts: 2834
Location: US
Look like this game has a 'press select until you get what you want' type of RNG. I was able to resync up to the first boss in 2.8 but can't get the orb to fall as fast as in this run yet. I'll keep trying though, would be cool to be able to console verify this.
Editor, Skilled player (1441)
Joined: 3/31/2010
Posts: 2113
Oi, thanks for the response, all. Appreciate it a lot. @Fortranm There was a lot of stuff found for the game since the old warpless run. Let me go through the big things I can think of: * I haven't tested it, but the new holy water manipulation should be applicable 1:1 in the J version. * There were a handful of stair glitches that should save time in the J version, even though character switching takes an eternity. With Grant, you can also abuse the edge of the screen to disalign from stairs, which might help in the ship level and possibly other places. * Launches do not work in the J version. For that reason alone, I honestly think the warpless run should be redone in the U version (shame about the music), because you can do some very impressive superjumps to clear the vertical sections very fast. On U, the route would have to be re-evaluated to account for superjumping, as now going the cave route could be faster. * The scroll glitch also works in J and should hopefully save time for Grant in at least one or two places in both versions. I'm not sure if scroll glitching Dracula the way I did in this run is as helpful in J, because Grant's throwing knife has slightly different characteristics. Dracula also behaves differently in J. That would need to be tested. You should still benefit from a much earlier input end though. * The horizontal screen wrapping I did in Block A should also be applicable 1:1 to the J version. I hope that is insightful. I hope I get to see a warpless improvement for Grant at some point, regardless of what version it's performed on. The old warpless run is definitely in need of an update. @Alyosha Thanks a lot for taking the time to attempt a resync! However, I think it'll only get more difficult as the run goes on. Once the run picks up Grant, Select no longer works as a free RNG manipulation button, since you perform a character switch then. You can however start holding Select during a room transition or similar and release it at a certain time. Maybe that helps. RNG is unfortunately based on idle CPU cycles per frame, so it will be difficult to adjust. It's 2 bytes located at $1F. Additionally the dropped input frames and different lag will also add complications. Still, good luck!
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3827)
Joined: 11/30/2014
Posts: 2834
Location: US
I was able to get up (almost) dracula without too much trouble (only one enemy is visibly different between the resync and the orignial, I flying skull in level 3) with no added frames. However I got a desync on the scroll glitch right before dracula. It looks like a controller input is missed and causes a desync in the tiles generated in draculas room. I don't know how to fix precisely, if some other approach can be used, or if dracula can be fought another way. Here it is if you want to try, I think this is as far as I can go with my limited game knowledge: https://tasvideos.org/UserFiles/Info/638016425343155312
Editor, Skilled player (1441)
Joined: 3/31/2010
Posts: 2113
Alyosha wrote:
I was able to get up (almost) dracula without too much trouble (only one enemy is visibly different between the resync and the orignial, I flying skull in level 3) with no added frames. However I got a desync on the scroll glitch right before dracula. It looks like a controller input is missed and causes a desync in the tiles generated in draculas room. I don't know how to fix precisely, if some other approach can be used, or if dracula can be fought another way. Here it is if you want to try, I think this is as far as I can go with my limited game knowledge: https://tasvideos.org/UserFiles/Info/638018112292344995
Thanks a million! Through changing the timing of a pause, I was able to circumvent the dropped input and made it to Dracula. I'm up to the next DPCM glitch in Dracula 1, which I'll try to circumvent somehow as well. I'll keep you updated. EDIT: User movie #638018112292344995 Okay, this should be it, I think? I'd appreciate if a moderator or judge could replace the submission file with this one. This file has only minimal changes to the original submission. I have one "free" tile I can let the game despawn, so I move that despawning into the place where the dropped frame occurs. That way, I don't actually avoid it, I just circumvent it. Huge thanks again to Alyosha for doing the work of resyncing this up to Dracula! Update 2: BizHawk was nagging me to add a cycle count to the movie, so I did. The final submission file is therefore this: User movie #638018370717274227. The input should be unchanged to previously, the only difference is the header information.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3827)
Joined: 11/30/2014
Posts: 2834
Location: US
Oh cool you were able to do it, awesome! I'll try to console verify when I get a chance (maybe this weekend.)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3827)
Joined: 11/30/2014
Posts: 2834
Location: US
Unfortunately this run desyncs on console. About 1/4 of the time I correctly get the holy water, but then I get hit at the random spawning monsters about 1 minute later. In 4 trials of successfully getting holy water I get hit by the same enemy in this area and fall in the pit. This is presumably an issue with MMC5 IRQs, which have not been tested to the same level of precision as MMC3 IRQs. Disappointing, but thanks for making the effort to get it to work on 2.8 for testing anyway scrimpeh.
Editor, Skilled player (1441)
Joined: 3/31/2010
Posts: 2113
Alyosha wrote:
Unfortunately this run desyncs on console. About 1/4 of the time I correctly get the holy water, but then I get hit at the random spawning monsters about 1 minute later. In 4 trials of successfully getting holy water I get hit by the same enemy in this area and fall in the pit. This is presumably an issue with MMC5 IRQs, which have not been tested to the same level of precision as MMC3 IRQs. Disappointing, but thanks for making the effort to get it to work on 2.8 for testing anyway scrimpeh.
Ah, that's a shame, although honestly I'm not that surprised. Still, thank you for trying, and thanks again for all the effort you've put into this!
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3827)
Joined: 11/30/2014
Posts: 2834
Location: US
Minor update, I tried changing the IRQ timing a bit without success. The best I can do is beat the first boss but I don't get correct RNG on the orb drop. This one will need to wait for better MMC5 emulation.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15628
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4895] NES Castlevania III: Dracula's Curse "Grant path, warp glitch" by scrimpeh in 14:18.24