Currently published AoS movies.
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.
- 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.
- 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.
The basic controls are simple enough, but one or two lesser known tricks are:
- L & R in menus: The L and R buttons can be used to page-up or page-down in a menu. In an all-souls run, this can save quite a bit of time.
- up + L for Hippogryph: Hippogryph can be activated from midair with L, but you can also do a Hippogryph jump from the ground with up + L.
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.
At the start of the game, you can only walk. It moves at 1:80 pixels/frame.
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.
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.
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.
is a demonstration of the fastest known pattern. It moves 24:60 pixels every 10 frames, for an average of 2:70 pixels/frame.
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 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 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.
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.
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.
-- 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
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.
: backdash patterns for going up slopes
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
- Light weapons can be canceled by landing from a jump.
- Make sure your strength is high. Use Skeleton Knight, Minotaur, Triton, or Lubicant as your enchant soul. Consider using Great Armor as your guardian soul, but watch the MP cost.
- Check the enemy weaknesses and tolerances, and see if it might be worthwhile changing to another weapon. (But consider also the cost of the pause screen.) For example, Julius is tolerant to holy damage type, so don't fight him with Mystletain or Claimh Solais. On the other hand, Legion is weak to said type, so Mystletain + Valkyrie is a great combination on it.
- Bullet souls Nightmare, Lightning Doll, and Valkyrie can deal a lot of damage for their moderate MP cost; but try others too.
- Killer Mantle is a special case: for certain monsters, it swaps the target's MP with HP, so animated creatures like golems and unintelligent beasts like Red Minotaurs can be killed in one shot. Magical monsters with lots of MP, such as Stolas, get the reverse effect and are thus healed. Some other monsters, including Final Guard, are neither one-shot killed nor healed by Killer Mantle; instead, it hits them bypassing their armor. For Final Guard, whose armor is massive, this makes Killer Mantle unrivaled among bullet souls for damage per second.
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:
- Attacking (once per swing, or twice if Soma grunts)
- Using the Kicker Skeleton
- The normal pattern above changes the RNG once per 6 frames.
- This pattern changes the RNG three times per 11 frames, though it is slightly slower to move than the regular kicker skeleton pattern. It moves 38:78 every 11 frames, averaging 3:7f per frame.
- Wobbling with the Black Panther soul (1/frame)
- Using the Imp soul (1/frame). The Imp soul is great because it can be combined with most other actions without delay — other than changing to and from the Imp soul.
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.
Death warp glitch
The key to klmz's glitched run
. The death warp glitch is a combination of several programming oversights:
- It is possible to get Soma to 0 HP without him dying.
- When Soma is at 0 HP, he won't trigger a room transition when he goes offscreen.
- If Soma is offscreen and his health at any point rises above 0 HP, a room transition will be triggered immediately.
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:
- Save the game at least once, so that the "Sleep" function in the pause menu is available for use.
- Get hit by a deadly blow at the same time as levelling up (or grabbing a soul).
- Enter pause menu and sleep.
- 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.
: Information about finding broken room transitions.
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:
- Get Soma (or Julius) embedded in a wall
- Let the wall ejection algorithm push him off the screen, through the wall
- 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.
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
: 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.
- Most major boss death sequences produce a lot of lag. A very good way to avoid this is to spend a lot of time in the air.
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:
- Samurai armor. +3 STR, says it all.
- Dracula's tunic. +6 STR. The other bonuses are not really worth much.
- Demon's mail. +9 STR, but only available from demon lords, which take a painfully long time to kill.
- Black belt. +5 STR, available from werewolf in Floating Gardens.
- Chaos ring. Unlimited mana regeneration. (generally only useful in newgame+).
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).
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.
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.
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 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.
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.
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 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
|Address||Domain||Size and type||Meaning||Notes
|00A09A||EWRAM||2 bytes||Camera X position in pixels
|00A09E||EWRAM||2 bytes||Camera Y position in pixels
|000524||EWRAM||4 bytes, hex||X position on screen||Top 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
|000528||EWRAM||4 bytes, hex||Y position on screen||Top 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
|00052C||EWRAM||4 bytes, signed||X speed||Top 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
|000530||EWRAM||4 bytes, signed||Y speed||Top 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
|000008||EWRAM||4 bytes, hex||Random number
|01327A||EWRAM||2 bytes||Current HP value
|01327C||EWRAM||2 bytes||Current MP value
|01327E||EWRAM||2 bytes||Max HP value
|013280||EWRAM||2 bytes||Max MP value
|01328C||EWRAM||4 bytes||Current experience
|0000AC||EWRAM||4 bytes||Ingame frame
|Address||Size and type||Meaning||Notes
|0200A09A||2 bytes||Camera X position in pixels
|0200A09E||2 bytes||Camera Y position in pixels
|02000524||4 bytes, hex||X position on screen||Top 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
|02000528||4 bytes, hex||Y position on screen||Top 2 bytes are pixels, 3rd byte subpixels, 4th byte who knows?
|0200052C||4 bytes, signed||X speed||Top 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
|02000530||4 bytes, signed||Y speed||Top 2 bytes pixels, 3rd byte subpixels, 4th byte seems always 00
|02000008||4 bytes, hex||Random number
|0201327A||2 bytes||Current HP value
|0201327C||2 bytes||Current MP value
|0201327E||2 bytes||Max HP value
|02013280||2 bytes||Max MP value
|0201328C||4 bytes||Current experience
|020000AC||4 bytes||Ingame frame
, and other AoS experts and speedrunners.