Terminology and concepts

Some terms used in this article:
Rush soul
Devil, Curly, and Manticore. These souls transform Soma into a huge beast and cause him to rush forwards.
Blast soul
Bone Pillar and Catoblepas. These souls are very useful for canceling animations.
Light weapon
A weapon whose attack animation will be canceled by falling to the ground.
Heavy weapon
A weapon whose attack animation will not be canceled by falling to the ground.
Slashing weapon
A weapon which slashes directly in front of Soma, such as knife, baselard, combat knife, mystletain.
Swinging weapon
A weapon which swings from behind Soma's head through a semicircle towards Soma's knees. Examples are hammer, battle axe, Claimh Solais, Final Sword.
Cooldown
After a monster takes damage, it can't take damage again from the same source for a certain time. This time is known as cooldown. Cooldown varies across different weapons: Mystletain has a cooldown of 11 frames, while Ronginus Spear has 31 (the highest in the game). The maximum damage-per-second of a weapon depends on damage per hit and cooldown. There exist separate cooldowns for weapons, bullet souls, and guardian souls: that is, a monster who has recently been hit by Ronginus' Spear cannot be hit by a weapon for 31 frames, but can be hit by a bullet or guardian soul in that time.
Subpixels
Soma's position is internally stored at a greater precision than the screen can display. Position and speed are measured to subpixel precision. In this article, subpixels are written in hexadecimal, and the notation 10:80 means "ten pixels and 0x80 subpixels", in decimal "10 pixels and 128 subpixels", or 10 and a half pixels.

Basic mechanics

The basic controls are simple enough, but one or two lesser known tricks are:

Movement tricks

Most of the movement tricks in the game are centered around effective use of backdashing. Backdash has a faster initial speed than walking; however, you may not normally do backdashes more than once per 26 frames (see also: broken backdash). Thankfully there are several ways to circumvent it until faster movement methods are made available.

Walking

At the start of the game, you can only walk. It moves at 1:80 pixels/frame.

Backdash/jump/attack

Also known as the backstab dance. This movement pattern uses a jump to cancel the backdash animation, and an attack to prevent soma from turning around. This allows one backdash per 15 frames instead.
Here is a demonstration of the fastest known pattern. It moves 33:18 pixels every 15 frames, for an average speed of around 2:35 pixels/frame.

Backdash cancel

Souls like Catoblepas, Bone Pillar, and Medusa Head, can cancel most animations. One of their most useful applications is canceling a backdash without having to leave the ground and wait for Soma to land again. This allows one backdash per 10 frames. Catoblepas costs less MP but Bone Pillar does more damage if you later wish to attack with it.
Here is a demonstration of the fastest known pattern. It moves 24:60 pixels every 10 frames, for an average of 2:70 pixels/frame.

Broken backdash

If you backdash on one of the first two possible frames after a previous backdash (i.e 26 or 27 frames after the first), you enter a broken state where you move backwards, but you don't enter the backdash animation. During this broken backdash, you can backdash again.example This is a good way of moving down slopes before catoblepas, because jump-canceling as in the backstab dance above doesn't work so well when it takes a much longer time to reach the ground again. You can see this in Kriole's second all-soul submission, in the Skeleton Knight room and in the Giant Ghost room in the chapel.

Kicker Skeleton

Kicker Skeleton has a horizontal speed of 4 pixels/frame, which is faster than the backdash's initial speed, and it doesn't slow down during the animation. This example moves 21:80 pixels every 6 frames, average around 3:95 pixels/frame.

Black Panther

Black Panther has a horizontal speed of 4 pixels/frame, but it is always active, unlike Kicker Skeleton. However, you can save some MP in a TAS by using jumpkick during Black Panther movement and avoiding the landing cooldown by using Black Panther again.

Rush souls

Although rush souls take a while to charge up and use a lot of MP, they have a maximum speed of 6 pixels/frame, the fastest speed Soma can go. Unfortunately, due to the castle layout, Soma will have to keep re-charging his rush soul in each new room and many times within some rooms, limiting the use of said method of movement to newgame+, where rush souls are available from the beginning but Black Panther is not. The newgame+ speedrun at SDA makes heavy use of rush souls.

Corner Boosting

It is possible to corner boost on all corners, but it requires either a very good position or a fairly high speed.
The first method requires you to be inside the wall, a feat which is rarely achievable. The most common way to be inside the wall is to approach it from above. When inside the wall, simply cutting the corner on the right frame may or may not give Soma a slight vertical boost. This generally saves 1 frame/application. Demonstration -- notice how from frame 140 to 141, Soma moves downward 11:40 pixels but his Y speed is only 6:40. Thus, the corner boost netted 5 pixels of downward movement.
Black Panther can be used to very easily get consistent corner boosts, both up and down. TODO: example
Another way of boosting is called platform boosting. All platforms have rounded edges which allows you to land earlier on the edges of a platform opposed to the center of it (this was added by the programmers to make tricky jumps more forgiving). This can be abused to get slight boosts, by landing on the edge of a platform, waiting for a frame for Soma to get to the top of the platform, then continue jumping. This generally saves 3 frames/application.Demonstration

Heavy fall cancel

After a heavy fall, soma crouches to regain his breath. This animation can be canceled with a rush soul or a blast soul.
TODO: backdash patterns for going up slopes
TODO: ducking trick

Attacking tricks

Maximizing damage output against monsters is a tricky business in Aria of Sorrow. The main issue is managing cooldowns. There are four separate cooldown values: weapon, bullet soul, guardian soul, Kicker Skeleton/Skeleton Blaze. Given the appropriate cancels, you can swing a weapon far faster than a monster can be hit by it, so in order to maximize damage output, you have to interleave different damage types. A great example is the fight against Death in Kriole's all-souls v2. Using Mystletain, Bone Pillar, and Kicker Skeleton, there is a sustained slash/blast/slash/kick sequence. A detailed discussion of cooldowns, plus a lua script to display cooldown values for enemies, is in this post.

Luck manipulation

The current 32-bit value of the RNG is stored at 02000008.

Cycling random numbers

Much luck manipulation consists of cycling the RNG until it reaches a desirable value. Some ways of changing the RNG value:

Luck manipulation scripts

Luck manipulation problems

If you are using rhebus's soul drop script, you may notice that there are some potential soul drops which are 'impossible' to get with a normal weapon. This is because of soma's grunting behaving poorly -- the preceding random number will cause Soma to grunt, skipping the soul drop random number. It is still possible to get this soul through other means (bullet soul, guardian soul, kick, skeleton blaze, or even swing first, wait for a few frames for other random number events to cycle to the correct location, then hit the target with your already-extended blade.

Heavy glitches

Death warp glitch

The key to klmz's glitched run. The death warp glitch is a combination of several programming oversights:
Getting Soma to 0 HP
To get Soma to 0 HP, you need to save the game after Soma has been hit but before the game registers his death. When you restore the saved game, Soma will be at 0 HP but alive and well. Usually it isn't possible to enter the pause menu to save when Soma has been hit; however, if you get hit at the same time as levelling up or grabbing a soul, there are a few frames when you are able to enter the pause menu. Thus the process is:
  1. Save the game at least once, so that the "Sleep" function in the pause menu is available for use.
  2. Get hit by a deadly blow at the same time as levelling up (or grabbing a soul).
  3. Enter pause menu and sleep.
  4. Restore the game.
Broken room transitions
Once you have your nicely undead Soma, you can leave the current screen without triggering a room transition. If you move around for a while, then consume a HP item, you will trigger a room transition. Usually you will hang the game at a black screen, but some locations will take you to unexpected places. klmz's run starts off with a room transition which takes him from the Creaking Skull room to the Chaotic Realm.
TODO: Information about finding broken room transitions.

Out-of-bounds glitches

This general class of glitches exploits flaws in collision detection code to move Soma through walls. This can send you off the edge of a screen which doesn't have a normal exit, and so you will trigger a room transition which the designers hadn't planned for. Usually you will just hang the game at a black screen, but some places have notable shortcuts. A particularly common mechanism for these glitches is as follows:
  1. Get Soma (or Julius) embedded in a wall
  2. Let the wall ejection algorithm push him off the screen, through the wall
  3. Trigger a glitched room transition and end up somewhere completely different
The wall ejection in Aria of Sorrow generally pushes Soma upwards at 8 pixels/frame, so many of these glitches feature Soma rocketing upwards before appearing somewhere totally random.
Most normal movement (walking, jumping, etc) in Aria of Sorrow has pretty good collision detection; glitches are generally only possible through more unusual forms of movement.

Catoblepas/Gorgon abuse

When Catoblepas or Gorgon turns around, if you are standing on its back, the game attempts to move you so that you are standing on the same body part after the turn; i.e. if you were on its hind, the game moves you so you are where the hind is after the turn. This movement doesn't properly check for collisions, so it can embed Soma (or Julius, in fact) in walls. Once you are embedded in a wall, the game will try to eject you, and hilarity ensues.
See zggzdydp's warped run and pirate_sephiroth's warped run for examples. These glitches are quite possible in realtime play: particularly, the warp from the Catoblepas cupboard in Castle Corridor (with the copper armor) to the Chapel, and the warp from the top of the first floating garden room to the arena (only in zggzdydp's run). Both of these glitches are possible with Soma or Julius.

Rush soul abuse

Rush souls can make Soma bigger than the space he is in. This will cause wall ejection to kick in, often sending Soma through a ceiling. You can see this in pirate_sephiroth's glitched run, where Soma glitchwarps from the Chapel to the Underground Reservoir by first using Manticore to glitch through the Chapel wall.

Giant bat abuse

TODO: get someone who understands this to write something here
Giant Bat is also useful for glitchwarps. It seems to let you both embed yourself in a wall and control the direction of wall ejection so you can move horizontally though walls.

Lag reduction

Equipment and stats

Soma has 6 stats:
ATT/STR: causes Soma to deal more damage.
DEF/CON, which reduces damage Soma takes from enemies.
INT increases the damage of some souls.
LCK is almost useless. It increases soul and item drop chances by a microscoping amount. Literally thousands of points of LCK are required to make a drop twice as likely.
The most useful weapon at any point is a complicated question, which will depend on availability (eg final sword isn't available until quite late), +ATT, +STR, cooldown (Ronginus' Spear has great damage but terrible cooldown, reducing dps) and damage type. Good weapons include baselard, combat knife, mystletain, muramasa, and final sword. Notable other weapons include laevatain (fire damage), claimh solais (tremendous holy damage, light weapon, but a huge detour to get it), vjaya (lightning, very short cooldown allows multiple hits, moderate detour), positron rifle (got through boss rush).
The most useful armor and accessories:
Interestingly, the heart pendant quadruples the drop rate of hearts from enemies. That said, it's useless.

Strategies for particular bosses

For an all souls run, it's important to note that most early game bosses are not unique and also appear later in the game; for these bosses, the chance of a soul drop is not 100%. Usually you will want to get the soul at your first encounter, either because it is useful (Creaking Skull, Great Armor) or because your route doesn't involve killing another of its kind (Manticore, Big Golem).
For later unique bosses, the soul drop chance is 100% (but see caveat under Legion). Graham, Julius and Chaos don't leave souls.
Nonunique bosses: Creaking Skull (also in Dance Hall), Manticore (also in Floating Garden), Great Armor (also in Clock Tower), Big Golem (also in Underground Reservoir).

Headhunter

One thing to note is that if you kill either of the first two forms closer to the middle of the room, it will take less time for the next form's head to attach to her body. cpadolf's Julius mode run demonstrates this excellently.

Death

You want to manipulate his first form towards the ground, because closer to the ground you can do more cancels and hit him faster. This post discusses some of the issues.

Legion

Generally, you'll only fight Legion on an all-souls run or a Julius 100% run. If you want his soul, you must kill the four shell sections before killing the core.
Legion's death animation is weird: depending on what frame you kill him, the cage may fall and break instantly, or it may hang in the air for ~2 seconds before falling.
You can grab Legion's soul on the frame that the game awards you the experience for the kill to get a glitched level up screen.

Julius Mode

Julius mode is only available after beating the game once. Julius is very different from Soma: he can't collect items or souls, he can only heal in save rooms or with boss orbs, and boss orbs are the only thing which cause Julius to level up. The game ends when you beat Graham. The optimal route is Creaking Skull → Headhunter → Graham: visiting more bosses costs more time than it saves on Graham, while visiting fewer makes the Graham fight take far too long because you do too little damage.
Julius' optimal movement is similar to Soma's Kicker Skeleton movement. Three of his four subweapons (crucifix, cross, holy water) do holy damage.

Miscellaneous

Glitched level up/soul grab screen

If you grab a soul the same frame you gain a level, you get a glitched level-up/soul grab screen. This saves a lot of time over having two separate pauses for level up and soul grab.
Here is a demonstration.
Sometimes you have to intersect the monster's hitbox to be able to grab the soul on the frame it is released. There are two ways to achieve this: take the damage, or use the blocking mail. Both techniques are demonstrated in Kriole's 100% v3.

Boss doors

Boss doors have larger hitboxes than their visual representation, so they can look open even though Soma won't be able to fit through just yet. This is a particular problem after you have beaten a boss and are waiting for the door to open again. To optimize boss door transitions, ensure you know exactly which frame Soma will be able to enter the boss door, and perhaps build up speed by using Kicker Skeleton from a high point.

Disc armor discs

If you kill a Disc Armor on the first frame of its attack, its disc will go flying at supersonic speeds. Not a useful glitch, but funny nonetheless, and reproducible in realtime with a little luck. You can see this in Kriole's first all-souls run.

Avoiding +5HP from Succubus

On the very first frame after hitting Graham, enter the pause screen and remove Succubus. The game doesn't have time to register the +5 HP gain. This is rarely useful, but if you are at 6–10 HP the HP gain could reduce the effectiveness of Lubicant and so it is necessary to avoid it. This is used in Kriole's all-souls v2.

Useful memory addresses

Available as a BizHawk watch file on the site's userfiles.
VBA addresses can be used in BizHawk by selecting the "System Bus" memory domain or by subtracting $02000000 and using the "EWRAM" memory domain.
AddressSize and typeMeaningNotes
0200A09A2 bytesCamera X position in pixels
0200A09E2 bytesCamera Y position in pixels
020005244 bytes, hexX position on screenTop 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
020005284 bytes, hexY position on screenTop 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
0200052C4 bytes, signedX speedTop 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
020005304 bytes, signedY speedTop 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
0200055C1 byteInvulnerability
020000084 bytes, hexRandom number
0201327A2 bytesCurrent HP value
0201327C2 bytesCurrent MP value
0201327E2 bytesMax HP value
020132802 bytesMax MP value
0201328C4 bytesCurrent experience
020000AC4 bytesIngame frame

Contributors

rhebus, Kriole, gocha, pirate_sephiroth, klmz, Yrr, Atma, cpadolf, Zurreco, moozooh, zggzdydp, and other AoS experts and speedrunners.

GameResources/GBA/CastlevaniaAriaOfSorrow last edited by adelikat 15 days ago
Page History Latest diff List referrers View Source