Tool-assisted game movies
When human skills are just not enough

Submission #5309: GloriousLiar's DS Kirby: Canvas Curse in 25:45.53

Console: Nintendo DS
Game name: Kirby: Canvas Curse
Game version: USA
ROM filename: 0028 - Kirby - Canvas Curse (U)(Trashman).nds
Emulator: DesMuMe 0.9.9
Movie length: 25:45.53
FrameCount: 92463
Re-record count: 124710
Author's real name: Jacob H
Author's nickname: GloriousLiar
Submitter: GloriousLiar
Submitted at: 2016-12-04 00:50:25
Text last edited at: 2016-12-08 08:06:34
Text last edited by: Spikestuff
Download: Download (59999 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

Kirby: Canvas Curse in 25:45.53 (0:20 IGT) by GloriousLiar

Author's encode

(Link to video)

Game Overview

Kirby: Canvas Curse is a 2D platformer developed by HAL Laboratory for the Nintendo DS. One day, the witch Drawcia appears and turns Dream Land into a world of paint. Kirby chases Drawcia back through the portal she came from and is cursed by being turned into a ball. With the help of the Magical Paintbrush, Kirby can move through the levels following rainbow ink lines.

Little did Drawcia know that she made Kirby more powerful than ever.


  • Abuses programming errors in the game
  • Manipulates luck
  • Takes damage to save time
  • Resets the game to save time


  • Emulator used: DesMuMe v0.9.9
  • Custom Lua script to track position and speed as well as manipulate position to test routing decisions. http://imgur.com/NCyAszW


This run is the result of three passes of optimization through the game. The first pass was a glitchless playthrough that followed the RTA route. In June 2016, however, I found a glitch that cut the time estimate for the run in half (literally). This one glitch, which I will explain in depth later, has many applications, and by its nature allows for movement over 10 times faster than intended as well as out-of-bounds clipping both on land and in water. For a long time I was dreading the use of it because while it saved massive amounts of time, it was a pain to get it to work, and it was required to make every screen of every single level fast. That said, it is a blessing, because it made this TAS better from a spectator's perspective than I could ever have hoped for.

Glitch, Trick, and Game Mechanic Explanations

Looped State

Kirby can be in what is called a looped state, which can either be defined as just coming out of a loop or riding a new line after looping previously in the level.

Line Attachment

Kirby can be attached to a line, which is to say not matter the orientation of the line, Kirby will ride it until the end or until the line fades away.

Line Composition

A line is composed of multiple line segments, ranging from 6 to 47 pixels in length. A line must have at least 2 segments to persist. The segments can be of varying lengths, which is important for some later tricks.

Position Correction Displacement

The previous explanations weren't glitches or tricks but are necessary to explain this next concept. If Kirby is in a looped state, and is attached to a line, encountering a new line at a pixel-perfect location on the original line creates an unknown attachment state. This encounter makes it difficult to determine which line Kirby should then be attached to, the original or new line. As a fail-safe mechanism, the developers made it so that when this undetermined state is reached, Kirby should be placed at the beginning of the previous line segment (not the whole line), and try the movement again. As long as both lines persist, Kirby will run into the new line, teleport backwards, run into the new line, and the process repeats itself until one of them disappears.

Position Correction Launch

The first unintended consequence of the position correction displacement mechanic is getting a launch out of Kirby's displacement. This is a major speed increase; where Kirby's speed is normally capped at 4 units per frame, these launches can yield speeds of up to 47 units per frame. This is performed by setting up the position correction displacement and then forcing the line beneath Kirby to disappear. The result is that Kirby will launch backwards, starting at the speed equal to the length of the last segment. It is important to make the last line segment as long as possible to get the most speed. There is a simple method to get a launch in nearly any direction or speed.
  • Put Kirby through a loop to set up the looped state.
  • Draw the first segment of the new line Kirby will launch from. Kirby won't attach to this line until at least 2 segments are drawn. You don't want Kirby launching from the line with the loop because it will take longer for it to disappear than the new line. It is also important to make this segment short, because it will disappear faster.
  • When Kirby reaches the position of the first segment, draw the second segment in the direction desired and of the length needed. This completes the line Kirby will launch from. It is also important to note that the line is drawn opposite the direction Kirby will launch, because Kirby gets displaced backwards.
  • Draw a new arbitrary line segment. This does nothing other than to make the line Kirby will launch from disappear.
  • Draw a new line for Kirby to collide with at the end of the long segment. This position is pixel perfect for a specific speed, but there are multiple locations which give different speeds. The positions of these locations are all parallel to the line.
  • At this point the line disappears, and Kirby will be displaced backwards and maintain the "speed".
To better illustrate this process, I made a short gif: http://imgur.com/hNpXfqd

Velocity Clipping

Launching is great, and lets you traverse large areas quickly, but more can be done with this speed. If Kirby is moving fast enough toward an obstacle such that on one frame he would be inbounds and the next would be somewhere within the obstacle, Kirby will actually ignore hit detection on the wall and move inside the obstacle. See more on the use of clipping in out-of-bounds movement.

Position Correction Displacement Clipping

There is a more direct form of clipping out-of-bounds that is used situationally. The same setup as normal Position Correction Displacement is performed, but the line used to teleport starts inside the wall. When Kirby gets displaced backwards, he will actually be inside the wall. This method allows for some neat sequence breaks. Because water will not let Kirby launch at high speeds, this is the only way in which out-of-bounds clipping can be achieved from within water.

Ink Conservation

There is a finite amount of ink available for use. Ink can be refilled, but in general it is slower than just working with the ink available. It runs out very quickly while setting up a lot of the glitches, so there are methods used to conserve ink and get by with very little. One small tick on the ink meter is all you need to draw a line (2 segments). This can only be done though if the first segment is as short as possible. If you have any ink whatsoever, you can draw a line segment the maximum length (47 units). So even with the minimum amount of ink, you can draw a decently sized line that works for most purposes. This is used a lot while out-of-bounds, because there is no way to refill ink and it is critical to always be able to draw sufficient lines.

Out-of-bounds Movement

Being out-of-bounds, more specifically inside obstacles, has very weird properties. When inside an obstacle, the game forces you violently upward, usually to the tune of 30 units per frame. This quickly gets out of hand and Kirby must be manipulated with lines to not lose control and die from straying too far out of the bounds of the level. As a result gaining height while out of bounds is very quick, and Kirby can traverse long vertical sections quickly by riding walls in certain situations. Horizontal movement is trickier, because Kirby must be touching a line at all times. To make this quick is an ink-heavy process, and properties of lines described earlier must be abused to conserve ink. You cannot loop out-of-bounds so it is a slow process, but the amount of the levels that can be skipped as a result is tremendous. Lastly, one more type of out-of-bounds movement exists, and that is downward vertical movement. Kirby gets forced violently upwards, so it is not obvious how to move Kirby downwards while out-of-bounds. The only known way to accomplish this is by rubbing against the edge of the level (where the camera locks, it's not a standard wall) and drawing straight vertical lines from below. This sucks Kirby downwards in the direction of the lines.

Stopping Momentum

Having high speed is great, but frequently it is necessary to stop momentum to avoid obstacles, launch in another direction, etc. This is difficult because within a few frames of launching at a high speed, Kirby will be off screen and there is no way to stop momentum while that is the case. Kirby does eventually come back on screen though as he slows down and can then be manipulated. Kirby can be slowed down in a few ways. The most useful method is tapping, which immediately kills all speed and returns Kirby to a normal tapping speed. This can only be done when Kirby is on screen. Another useful method is drawing a line to stop Kirby, because touching a new line will kill speed. It is sometimes useful to kill speed with a line and then use this new line to set up a new launch. Lastly, Kirby can rebound off obstacles or take damage in certain situations to kill speed and quickly resume high-speed movement in another direction.

"Dash!Jump!" Resets

By resetting after completing a level, the Dash!Jump! minigame that follows 2/3 the levels can be skipped. This saves roughly 10 seconds per reset, and over 2 minutes in total.

RNG Manipulation

When you move as fast as Kirby, RNG doesn't really affect the run. This is because within the levels, the only meaningful RNG is enemy movement patterns. However, enemies always spawn in the same place, and when you zoom past them at high speeds, their movement patterns can't do much. Also, since there is a soft reset after every level, the seed is always the same and things can be somewhat predicted. There were only a few places RNG had to be manipulated, most notably to get the Drawcia/Soul patterns at the end, which can lose up to 30 and 60 seconds respectively. The only other times RNG had to be manipulated was the end portal spawn in Mad Mechanism, and to prevent the Kirbies from tripping in the old-timey movie cutscenes after boss games. RNG could be manipulated by adding in additional inputs to levels, typically tapping specific enemies that wouldn't disrupt optimal movement.

Stage Comments

The game consists of 22 levels - 7 worlds, 3 levels per world plus the final boss stage.

Reddy Land

Plant Plain

This level is fairly straightforward with 3 horizontal screens. The obstacle and terrain placement in the screens make each of them require 2 launches per screen.

Tiny Town

First instances of Velocity Clipping. The first screen can be seen as a very horizontal level with a few barriers in between that can be ignored. The second screen is completely skipped because the exit is directly next to the start and features the first instance of Position Correction Displacement Clipping. This skips not only going through the whole level but the first of 7 miniboss fights. This saves about 30 seconds. On the last screen the exit is directly below the start, and the most direct route involves hugging the wall to go downwards and then launch to the portal.

Ravine Road

One of the most wide open, horizontally focused levels in the game. The first screen is littered with obstacles and requires some vertical movement, so the launches were fairly precise. The second screen features one of the most precise launches in the run. The launch narrowly avoids a checkpoint, many enemies, and a few gates, at the cost of hitting a switch which only wastes a few frames. It ends by landing out-of-bounds at the last platform which forces you up right next to the exit. The last screen is less precise because it is more open, but it narrowly avoids just as many obstacles as the second screen.

Kracko Jr

This is the first of 6 boss fights. The boss order does not matter because you can't skip any fights, but the order I did them in is designed to break up some autoscroller sections. This first fight features another broken form of movement just because of how many inputs per second can be performed at a TAS level. The objective is to kill the enemies as fast as possible to unlock gates and move on. Sometimes it is globally optimal to sacrifice some speed because it allows you to kill the last enemy slightly faster. It is also faster to just face-tank the blocks rather than tap them because there are 6 frames of delay for every tap, which are better spent as 2 paddles. The fight at the end is just getting the first hit as soon as possible and getting first-frame hits at every subsequent vulnerability.

Arange Gorge

Ghost Grounds

Here the first screen can be navigated with just 2 launches, passing through some thin barriers. The second screen is a tall, vertical level, which requires a precise Position Correction Displacement clip that is positioned so that when Kirby pops out of the wall at the top he hits the exit. The last screen is vertical as well, but you start at the top of the level. With a few precise launches and some enemy manipulation at the end, the portal can be reached in 3 launches, passing through a variety of obstacles.

Growth Grasses

The first screen of Growth Grasses can be navigated with a single launch that is deceptively precise due to the number of enemies avoided. The second screen features one of the most precise launches in the run, starting near the top of the most vertical level and launching all the way to the bottom through obstacles, enemies, and large pieces of terrain. Kirby lands directly in to a miniboss fight. The bomb balloon spawn positions are all set, and each one only spawns after the previous has been destroyed and Kirby is a certain distance away. Keeping this in mind, it's best to take out many balloons at once so that they all begin to respawn at the same time. The best way to do this is to tank a hit and then launch horizontally through the balloons. This allows 3 bombs to be hit in rapid succession and the delay between the spawns is synchronized. A launch to the exit at the end finished the fight. Note that this miniboss can't be skipped like others because the exit spawn is tied to the last balloon being destroyed. The final screen is very horizontal, but easily navigated with some specifically angled launches.

Mag Mount

Mag Mount presents the first instance of lava, which is harmful to touch and burns Kirby. The speed of the first screen is determined by how quickly you can hit the bomb block, because it takes a set amount of time for the portal to spawn. The second screen takes some intentional damage in order to save time. By clipping in to the pillar on the right, the invincibility frames can be abused to clip directly to the exit. The last screen is very tall and very vertical. The fastest way up is to ride the wall, but in order to not fly up to Kirby's death, lines need to be placed to slightly slow down movement. Once out of the wall, a launch to the portal finishes the level. An additional input was added at the end of the level to prevent a Kirby from tripping in the subsequent boss fight.

Paint Panic 1

This is the second of 6 boss fights. In this fight the player is required to connect dots to form shapes. The shapes are the same every time, and dots can be connected every other frame. There is no room for improvement on this section. The pattern at the end is random, but every pattern takes the same amount of time to input.

Iello Adventure

Rift Ruin

In my opinion, this is where the run gets really good. Not because the previous levels are unoptimized, but because the routing and strategy becomes much more spectacular. This level consists of 5 unique rooms. The first starts with a launch which rebounds off the opposite side of the level, and the rebound is used to place Kirby on a line that then launches him into the wall to go straight to the exit. The second screen is easily taken care of with a single high speed launch to the exit through a thin floor. The third screen is one of the cooler skips in the game. Rather than shoot to the top of the level and break a bunch of barriers to drop another cannon to the floor, I clip and launch straight to the top where the cannon is already sitting! The next screen features a tight launch halfway up the screen, followed by two quick, precisely angled launches to hit the exit. Kirby moves so fast here that the Crash enemy spawns after the exit is already hit, and no damage is taken. The last screen is navigated quickly with a single launch.

Contrast Cave

Contrast Cave features one of the more major skips in the game. The first screen is cool because the exit is located far below the start spawn, but right next to a wall which Kirby quickly runs down with efficient out-of-bounds movement. The second screen features the skip. Using Position Displacement Clipping into the floor of the seabed at the start of the screen, an unintended exit is reached. This exit is intended to only be reached from the other side, and puts Kirby at the end of the last screen of the level. So, in total, this skips half the last screen plus a miniboss fight on the second screen! The last screen is quickly taken out by some efficient destruction of blocks and a precise launch to the end portal.

Silver Submarine

The skips in Silver Submarine showcase the stark difference between RTA and TAS for this game, saving a few minutes. The maze-like design of the level is bypassed with heavy abuse of out-of-bounds movement and clipping. The first screen has a large horizontal section at the top of the level which is a great place to launch across, and the exit is just beyond a thin barrier at the end of this section, and is trivial to get to. The second screen is one of the most satisfying in the game both in how clean it looks and how precise the launch to the exit is (one of the most precise in the run). The last screen takes two quick clips to where the end portal spawns, and a specific loop is used to manipulate the spawn of the exit and then reach it. An input was added to avoid a Kirby tripping in Cart Run.

Cart Run 1

Cart Run was surprisingly the most difficult boss to TAS. This is because the routing is more difficult than the execution. It took a lot of testing to get the route down, but I'm happy with the result. The goal is to hit as many "MAX SPEED" as possible, which is achieved by hitting multiple food in rapid succession. Sometimes, however, this is not the best way to move. Because when you are in a MAX SPEED state you can't gain any more speed, if you are left in an area sparse of food, you move very slowly. As a result, sometimes it is faster to ignore an opportunity for MAX SPEED by just getting individual food that is spaced out better. Other than that, it is effectively an autoscroller.

Neo Greo

Machine Mansion

Machine Mansion features the first autoscroller of the game. Before it, however, are 2 nontrivial screens. The first screen has some obstacles that must be cleverly navigated through, such as bouncing off a bumper and weaving in and out of lasers. There is a giant hill in the way that creates a chokepoint that is difficult to get through. The next screen is trivialized when you can just go straight out-of-bounds and launch to the exit, skipping a chain of cannons. The last screen is an autoscroller that can't be sped up because of the camera lock, so it has some good ol' playaround.

Dreamy Darkness

This is one of my favorite levels because it is a lot of short rooms that look really fast when optimized. A few of them, like the first screen, move out-of-bounds to bypass the intended path, but most just launch across to get to the exit quickly. Don't blink on the last screen though, or you'll miss the fact that an entire miniboss fight was skipped by just going too fast through it for the fight to start.

Paletto Polis

Just 2 levels after Machine Mansion there is another autoscroller thrown in the mix. First though is a large vertical tower that can be completely skipped by abusing vertical out-of-bounds movement to head straight to the exit. The second screen has a roundabout puzzle where normally you go up and around an enormous room, unlocking gates as you go. But in the TAS, it is trivial to just skip straight to the exit which is close to where Kirby spawns. The autoscroller is nontrivial in the fact that there are certain triggers that must be hit for the autoscroller to progress, but finding where they were was simple and I was able to fit some playaround in between them.

Paint Panic 2

Exact same as Paint Panic 1 except more painting with more points. Nothing else to say here.

Bloo Hills

Cold Course

This level is one of few to include an unintended shortcut. Two launches get Kirby straight to a room that displays a large button and 2 medals, but interestingly beyond a thin barrier is an exit that leads straight to the end of the level. This skips 1.5 long screens and saves a lot of time as a result. The last launch of the level is incredibly precise, and the icicles had to be carefully manipulated to not interfere with Kirby's path.

Dungeon Dome

Aside from Canvas Canyon, this is the level I spent the most time on. The first screen is incredibly large and to go fast a lot of unintended movement is required. It ended up being fastest to go straight right to the edge of the screen to wallcrawl to the exit, mostly because entering the water would be very slow. The second screen has one of the most precise launches in the run, positioned so that the recoil would send Kirby in the right direction when entering the miniboss. The enemies in the miniboss had to be taken out in the right order to spawn the exit. Some clever movement had to be performed to deal with the enemies quickly and get to the exit without the assistance of a platform. The last screen has some neat vertical movement followed by a precise launch landing Kirby right next to the exit.

Canvas Canyon

This level was incredibly difficult. It has three of the most precise launches in the entire game. The first launch is on the first screen, it goes through a wall and past a sawblade over near the exit. The second launch is on the second screen, and is used to clip through a slope that normally can't be clipped. I'm fairly certain the launch is angle perfect as well as pixel perfect. The last launch is on the third screen and leads to the exit, narrowly avoiding enemies, obstacles, and a spinning sawblade. It is ridiculously precise.

Cart Run 2

Same as Cart 1 except longer and Dedede is also equipped with throwable hammers. These are trivial to weave through though, and pose no threat. Nothing else to say.

Omarine Zone

Collapse Castle

This level looks cool, but was a pain to TAS. The first screen has one of the longest wallcrawls in the run, it took a long time to optimize. The second screen required several clips, each requiring their own line because the spacing was poor and they couldn't be launched between. The last screen was simple in theory, but took a while to optimize because of a long-distance launch into a wall and avoiding the obstacles by the portal.

Volatile Volcano

Another very cool looking level. The first screen is nothing new, resembling a screen seen in Mag Mount. The second screen has a launch that lands in the wall on the opposite side, and a wallcrawl is used to navigate to the exit. The third screen has a very precise bankshot off the ceiling to clip the floor of the miniboss and start it quickly. The strategy for the miniboss is to launch between the enemies after they've been triggered so they both get activated quickly. The last screen has a lot of launches and bank shots because of the hills, but the neat outcome of how fast it became was the lava never even rises once. Normally, the lava would cycle up and down a few times, but the screen goes by so fast you barely see it rise at the end after Kirby is already in the portal.

Silent Seabed

This level saves the most time over RTA. Three major skips make this one of the fastest levels in the TAS, whereas RTA it's one of the slowest. The first screen, which features two long underwater vertical passages, is skipped entirely by passing through a thin barrier. The second screen starts with a clip into the wall and rides it straight to the exit, skipping a long, maze-like underwater screen. The last screen features one of the coolest skips in the game, an autoscroller skip! Due to the magic of downward out-of-bounds movement, Kirby can get far underground at the beginning of the level, allowing him to navigate straight to an exit waiting below! Another odd quirk of being in that location at the start of the level is that for unknown reasons, the autoscroller begins to accelerate at an insane pace.


Same as Kracko Jr except more levels with added difficulty. Still just as broken with the paddle placement.

Wonder Lilane

Frozen Fantasy

Probably one of the coolest looking levels in the run. The first screen which is usually very long and difficult is trivialized with a single out-of-bounds to the exit. The second screen normally is an autoscroller, but is only an autoscroller in the fact that there is a no-ink field preventing you from skipping it. With a few nice launches this can be completely skipped. The last screen's puzzle is completely broken by going out-of-bounds straight from the start to the end portal.

Mad Mechanism

Another spectacular level if not for the autoscroller to kill the pace. Luckily it's right at the beginning. After the autoscroller the following screen is completely destroyed by the vertical downward out-of-bounds movement. It skips a long segment in a no-ink field and the miniboss at the end of it! Some minor RNG manipulation was performed in the autoscroller to spawn the end portal on the last screen. It spawns in the top left corner making it easily accessible from the start.

Spectacle Space

A level very broken by out-of-bounds and launches. The first spike room is navigated quickly with a few precise launches through thin barriers. The second screen has a few puzzles that can be completely skipped by going through the barriers. The autoscroller isn't noteworthy but does include some playaround and RNG manipulation for Drawcia since there is no reset after.

The World of Drawcia

The World of Drawcia

This level is really cool because it's not as broken by out-of-bounds but just by the launches across the level. It makes it insanely quick in comparison to a normal playthrough of the level. Some precise launches, an out-of-bounds, and a bankshot.


Drawcia has 4 phases, each phase is different depending on the RNG seed you enter the fight with. Once you enter the fight this can't change, but each attack can be one of two depending on Kirby's current position or the player's inputs. The first two phases were manipulated to prevent Drawcia's sweeping motion. The enemy manipulated for the painting in phase 3 doesn't matter since it takes a set amount of time no matter what. The movement patterns afterwards are inconsequential because there will always be a certain amount of them and all are guaranteed to show up. The last phase has the manipulation that saves the most time. The spikes will always occur, but what happens after is random. The movement patterns manipulated are short, and the final attack in which she sends out some minions is by far the quickest pattern. With that, Drawcia is taken down in 4 fireball cycles.

Drawcia Soul

Soul is far and above the most random part of the game and I spent a long time finding an appropriate seed for the fight, the variance on the fight can be around a minute just from a poor seed. The seed was manipulated by waiting on the end of the Drawcia fight for a few frames before moving on to set the seed for the Soul fight. The trick to a fast Soul fight is to get the fastest 3 hits on Drawcia as possible while also getting a lot of Para Matter before the hits to set up for a 4 hit boss. The fourth phase has the largest chance of wasting time because it has the most patterns seen before being able to be hit, and each pattern in the phase consists of one of the longest attacks from phases 1-3. The seed I got is the best anyone has ever seen, beating the best seen RTA by 9 seconds. This seed was found using a manual search so there's hope for some improvement in the future on this, but not until luck manipulation is fully figured out.

Level Times (IGT)

Level IGT
Plant Plain 0
Tiny Town 0
Ravine Road 0
Ghost Grounds 0
Growth Grasses 1
Mag Mount 2
Rift Ruin 2
Contrast Cave 3
Silver Submarine 4
Machine Mansion 6
Dreamy Darkness 6
Paletto Polis 8
Cold Course 9
Dungeon Dome 9
Canvas Canyon 11
Collapse Castle 11
Volatile Volcano 12
Silent Seabed 12
Frozen Fantasy 12
Mad Mechanism 14
Spectacle Space 15
The World of Drawcia 20

Other Comments

The movie is quite fast paced, so I would recommend a second viewing in which you watch only the minimap in any given level. It really highlights exactly what is being skipped.

Special Thanks To: Isotarge, TJ, and the Special Snowflakes for motivation and advice Veiyr, SK, and Kirbymastah for motivation and reference material

Future improvements: I didn't spend a great deal of time grinding out a good Drawcia or Soul pattern, but I did give it a good brute force effort and the patterns I got are each about 5-10 seconds better than the best ever seen RTA. If the way RNG works could be figured out, it could save some time in a few places. Also if a way to skip autoscrollers that lock the camera could be figured out, the TAS would be 1000x better.

Suggested screenshots:

Mothrayas: Judging.

Mothrayas: A brilliant fast-paced and highly technical run. Accepting for Moons.

Sync note for publisher: Advanced Bus-Level Timing is enabled.

Spikestuff: Already have it up on YouTube Mr "Sync Note". Publishing.

Similar submissions (by title and categories where applicable):