Castlevania Harmony of Dissonance is a game that is relatively glitch free, but the glitches it does contain are fairly major.
To understand how they work, I'll be providing a technical breakdown of both major glitches used in the speedrun you see below:
A quick note: In the speedrun I use Maxim, a secondary character, instead of Juste, the main character. This is because Maxim's acceleration is handled in a way that makes beating the game so quickly possible.
The first glitch we'll talk about is called Launching. In the video, a launch is whenever I stand on a ledge, fall off of it, and go flying into a wall.
The reason launching works is because of the way the game handles acceleration.
The game has 8 bytes for movement, 4 signed, and 4 unsigned.
These are: Your X and Y speed(2 bytes each, signed), and your X and Y acceleration(2 bytes each, unsigned).
Positive X = further right, positive Y = further up.
Now, you'll notice that there is only one acceleration value. This is where the heart of the glitch comes together.
By tap away from a ledge, you accelerate in the direction, and then almost immediately begin decelerating.
By backdashing off a ledge, your acceleration value remains unchanged, because the speed of a dash is instantaneous and consistent for the first 5 or 6 frames
And finally, when you attack, your acceleration value is locked in place for a short time.
The way this results in the massive acceleration you see in the video, is that by falling off a ledge after tapping forward, and attacking, we lock our acceleration to a positive/negative value, which means we're moving backwards. By locking it in the air, we remove any deceleration, which results in a very fast speed gain until the end of your attack animation.
Now, we'll cover wall-sinking. You'll notice how after launching, I somehow end up in a wall, and get pushed upwards.
The reason we can get into the wall, is due to the way the game calculates collision. Every frame, the game moves you X pixels, based on the speed held in the RAM value, and then checks for walls.
The problem with this is, if we pick up enough speed (a value greater than 8.75 pixels per frame), we actually get into the wall before the game has a chance to check if the wall exists. Then, the game naturally attempts to eject us upwards.
This, plus the connections of the rooms while out of bounds, allow us to navigate from the first room of the castle, all the way to the final boss in easily a minute.
There is also a damage glitch that you can do as Maxim, not shown in the video.
The way it works is that the game has 2 values for attacks. If both values = 1 (as in yes, you're hitting something), then it sets to 0 until both values equal zero (your attack has stopped).
The damage glitch is this: You divekick into an enemy, and then immediately do a normal attack that also hits the enemy (setting the attack values to 0), and then have a third attack hitting the enemy before the values are unlocked.
This is done by throwing a shuriken before the dive-kick. Since the game's two attack bytes are locked at 0, it can't change the shuriken to acknowledge that it has hit something, allowing it to hit every frame without being stopped by the games internal invincibility timer.
Due to the length of Maxim's slash, the most hits you can do in a row with this trick is 14 before the attack values are unlocked, cancelling the glitch.
Results 1 to 3 of 3
- 09 Feb. 2013 08:18pm #1
Technical Breakdown of Castlevania: Harmony of Dissonance glitches.
Disco is neat.
- 11 Feb. 2013 12:22am #2
- Join Date
- Apr. 2010
- Location
- When freedom is outlawed only outlaws will be free
- Posts
- 5,113
- Reputation
- 195
- LCash
- 0.25
Holy shit, that's actually really awesome, and nice video + calculations and all of that. This kind of makes me want to play this game, thanks for sharing.
Also, you totally have to play your flute for us again on TinyChat
- 11 Feb. 2013 04:10am #3
+rep, would +rep again