Kirby and the Amazing Mirror 100% TAS

It's been almost two years since I submitted my second TAS on this site, the any% run of this game. I'm very happy that I was able to finally finish this project. :D
I began working on it in March 2008 when girfanatic501 and Sir_VG were discussing about a potential 100% run. Actually I considered working on that run long before but I didn't quite know the exact requirements to achieve 100% on the file. There was a time I started a thread at Kirby's Rainbow Resort in hope to get the information I wanted, but that was not the case. I also asked Sir_VG over at SDA at some time. I can't really remember but testings and discussion have shown that the following requirements need to be met in order to achieve 100%.
  • Open every treasure chests
  • Visit every room
  • Press every big switch
  • Activate every lever
  • Collect every Mirror Piece
  • Complete the game

Objectives

  • Takes damage to save time
  • Aims for fastest time
  • Manipulates luck
  • Abuses programming errors in the game
  • 100%
  • Genre: Platform
  • Used emulator: Visual Boy Advance 1.7.2 rerecording v19.3

Why Japanese ROM?

Because at the time I started the project, just like the any% I thought the japanese version would have advantage. I thought hits were more powerful or enemies and bosses were weaker. Floogal found out that this was only the case with the Missile ability, which was weakened in the US and EU version for no apparent reason. I was already 50.000 frames in when he discovered this so I didn't bother, given the fact that there was only very little text, in the ending sequence. As a side info, the intro is slightly faster in the Japanese version.

How I approached the project

Definitely, the first thing to do was to create a map. I took the ones from GameFAQs and put them in one large BMP. I played through the game and took a ton of notes. For instance, I marked every room which contained a treasure chest with a red circle, every instance which offered two special enemies, and much more. Sometimes, with complicated rooms I also drew the layout. I connected the warpstars and their landing point and rooms that went from one map to another. And for some parts I worked out solutions while still making the great map. Creating this map took over a month, and I was still optimizing it all the time.
While TASing the game, I never had in mind which route to take throughout the whole game. I always ascertained that there wasn't a better way to go. Planning was very hard and there was never a time I wasn't questioning a part of a route or a certain solution to a problem.
Producing routes with clearly defined "input abilities" (abilities I need for a certain route) and clearly defined "output abilities" (abilities I have acquired after a route is done), I began this just some time after I reached Carrot Castle in the run. I worked out said routes in June 2009 and it made running the game a whole lot easier. All I had to worry about was to make sure that I somehow got all the abilities I needed for certain routes and that after a boss fight I was on a convenient place in the starting room (If you win a boss battle you get the mirror piece of it and are placed at the door at which you began your route).
Here's an easy example of how I created a route while relying on certain facts: After having beaten king golem, you have access to the mirror gate of Rainbow Route. You have two potential routes to go. One starts with a wheel enemy in the beginning of the first room, goes down to Olive Ocean and other areas. The other goes up towards Mustard Mountain. Now which one shall I take? Hmmm. Let's take the latter one, because I can save the wheel from the king golem fight and I practically "save" one instance which will give me wheel later, at a time at which I have lost my current wheel. This was a rather easy example, planning the routes went much more difficult than that!
The great map looks like this. It may look like a whole mess and it has german notes at some parts. http://img525.imageshack.us/img525/8035/kam102.jpg
The fact that I worked everything out all by myself and no-one else helped (aside from the ones who posted in the thread and motivated me) is what now makes me truly proud. This run is a great accomplishment and it means a lot to me!

Influences

I wasn't only working on this run. There are lots of other projects I've been running that are not finished yet. However, the game I have touched the most aside from Kirby Amazing Mirror was Kirby Superstar. I planned not only to do the 100% run of Kirby Amazing Mirror but also of that game. My attempt with the greatest progress reached till Metaknight's Revenge, but then a Japanese TASer named smns72 popped up and his new Spring Breeze run was of such high quality that I was forced to start over because I didn't want to make a half-assed movie at that time. I was impressed by his high level of optimization but I didn't want to give up on the game although I never played it or even possessed a SNES. I first learned about the game when watching Nitsuja's run here on TASvideos. Feeling that it would be a great thing to do, to obsolete his outdated any% with a new glitched 100% run of the same time, I continued to work on it. The main problem was that it seemed almost impossible to communicate with all the Japanese TASers and gocha oftentimes acted as a kind of middleman to carry WIPs and new TASes to either side, while not being an active Kirby Superstar TASer. I was able to communicate a bit with one over Youtube and another in a japanese forum, I was even suggested to join a certain IRC channel but I wasn't able to connect to it and I finally gave up on the game - After having been forced to start over more than two times, often unnecessarily due to not having been informed about new strategies. I found it to be bothersome and tedious to go on like this. I don't blame anyone.
Right now, a TASer named OGA is known to work on the any% along with a few other japanese TASers and I'm really looking forward to his speedrun. It will be one of my all-time favourite TASes.

Tricks and Glitches

Now to come back to Kirby & The Amazing Mirror. I present you most of the tricks and glitches that are used in my speedrun.

Best way to accelerate

Just acquire running state and jump. If you are in a situation where you can slide all the time and your last slide will be canceled, it is often faster to do that.

Best way to move forward

Best way to move horizontally is, aside from sliding, to jump all the time. Running is slower than jumping by a small margin. If you slide off a platform and are now about to land it is often best to blow up and gain running state this way, because just landing and gaining running state will slow you down. But sometimes it is equally fast to just land, walk for one frame, and then acquire running state. You can run by pressing >, v, then >.
Sliding is faster than jumping all the time, if your last slide is canceled by a ledge. My testings have proven that it is best to be sliding for 10 frames before getting airborne.

Driving through enemies

Due to how the game works, if you drive through an enemy, you will get 4*3 or 2*3 hitlag frames most of the time.
If you have wheel ability acquired and need to navigate through an enemy, it's sometimes possible to reduce the hitlag frames from 4*3 to 2*3. This means reducing 4 hits to 2 hits, each hit lags Kirby for 3 frames. It's dependant on whether the ground is even or not, the size of your enemy, and sometimes also the enemy type and movement. For example, it is sometimes impossible to get a 2*3 outcome although the enemy is small and not moving. As far as I can remember, I had trouble with these in this matter.
Reducing the hitlag is done by altering Kirby's position, often at the beginning of a room. For an example, you can move to the right for 3 frames, and reduce 4*3 to 2*3 and thus save 3 frames.

Keeping momentum while blowing up

If you let go of the directional buttons, you won't get slowed down when blowing up.

Skip the backwards movement when going into wheel form

If you have momentum to one side and are facing to the other side while bumping into a wall, you will not lose your momentum. This way, you can jump against obstacles without losing momentum. But moreover, if you are in this state and are now starting to go into wheel form, you will not move backwards. This works only as long as you are still nearby the wall.

Luck Manipulation

You can luck-manipulate certain enemies to go out of your way or to otherwise behave as you desire. It's often dependent on timing, otherwise on your movements (if you are running, how many times you crouch while running, if and how many times you go into the opposite direction while running). Sometimes I wasn't able to get the outcome I wanted, even by delaying for a few frames performing said movements. It is probably possible to play through the game with perfect luck, but that would mean redoing tens of thousands of frames all the time. I simply couldn't bother. If I had planned to only accept perfect luck all the time, it would probably have taken another year or more to get the run done. This doesn't mean that the run is full of bad luck, of course.

Climbing ladders faster

When climbing ladders, it is fastest to climb for 6 frames, then let go or wait, then go on for another 6 frames.

Skip the 'spitting puff of air'-animation (glitch)

Sometimes, the game instantly sets you to the normal state after you press b while you're floating. So you are instantly capable again. If you are not fully blown up yet, you can still use your ability's actions or inhale. So you can combine this trick with the 'skip backwards movement when going into wheel mode'-trick if you are nearby a ledge.
The rate at which this bug happens is set, but kind of dependent on your movements. It will work sometimes if you are floating in a direction, but if you quit proceeding into that direction it won't work anymore for that specific frame it would have worked at. I used trial-and-error for this trick.

Skip animation after going underwater

When going underwater, you can't move for ~10 frames. Sometimes though, you can instantly move. This happened somewhere at frame 47100. I don't have an explanation for this, and since it happens very rarely it doesn't seem very abusable. That's why I didn't go for using this exploit.
EDIT: It happens if you have proper y-position while driving into a body of water. If your y-position is good, you will land and start driving on one "block" of water which allows you to skip the delay. However: - driving into a body of water with "delay" means you'll have constant speed of 316 which is the fastest for swimming. - driving into a body of water while skipping the "delay" means you need to build up speed until it's 316. So after all, this is slower and should be avoided.

Going through cannons

You can move towards a cannon, then duck and glide through it. That's because the hitbox is somewhere in the upper half of its sprite. Not really a trick but good thing to know.

Inside the ceiling.

Well, not completely but you can somewhat 'enter' a ceiling with proper positioning. You are then stuck for a short time and subsequently released. You can stay inside the ceiling using Missile and UFO, but you will get ejected when pushing towards the ceiling. Can be used for various situations...

Skip dark Kirby

Sometimes you don't encounter Dark Kirby, so you basicly don't have to deal with him and thus skip him. It seems to be another random bug though. But luck-manipulating it to happen must happen about ten rooms before this encounter, and the luck-manipulation itself takes a ton of idle frames, so I didn't use it.

Gain distance with Kirby-grabbing enemies

Couldn't think of a better name for those enemies. Some enemies will grab kirby or suck him in, if such enemies are hit at the same time or after they grab Kirby, they will let go of him. Works with Phan-phan and Droppies (the elephant miniboss and the yellow ability-stealing enemies).

Get Wheel or Fight-ability from golems

Golems are obviously stone enemies and will give you stone when absorbing their ability. Some golem enemies, however, will give you wheel or fighter. It depends their current movement. Not every golem can perform all the available movements. Some can only use a stomp attack (stone), some can only use a rolling attack (wheel), and some can only use a punch (fighter). But I can recall there being one who was able to perform all the available actions. I think he was in room 22...

frame-specific comments

This section covers parts I consider improvable, parts that I find funny or that worked out well. Feel free to watch the run while reading these.
950: It's faster to activate the switch with a puff of air.
1750: After getting wheel, it's faster to slide through the blocks, then jump over the big waddle dee.
6000: It's faster to beat Mr. Flosty with wheel, but only with good luck-manipulation.
14600: I didn't press the second switch here because I thought it would save time. I planned that I will come back with UFO later and press that switch and as a side-effect I could head for the rooms to the right of which one needed a far reaching ability.
By the way, feel free to ask if you are wondering why I took a specific path while I could have taken another.
21700: Yeah, surprisingly sliding is faster here by a small margin.
33230: I don't even know why I kept this part. I think I had decided to keep it because it was faster by one or two frames, but in retrospect, it seems a whole lot slower than going up there without using the skip-wheel-backwards-movement trick. This is one of the biggest flaws in the run, I suppose.
35100: I love this part. You are off-screen and the game can't keep up with you :D
39000: Got real lucky here that Crazy hand decided to come closer, finished both hands off in one blow.
75300: Here is one of the bigger mistakes of the run. I mix for bomb ability... by getting two bomb enemies together. Could have just swallowed one enemy here.
83500: This part looks cool.
101000: This is just why I like TASing Kirby Amazing Mirror. You can be so very creative with your decisions and boss fights, it's really amazing. :)
105000: Now to go for that second switch in Mustard Mountain. I don't really know if it's the fastest way, going for the second switch with UFO. Maybe it's faster to press the second switch along with the first one, and somehow mix UFO or another far reaching ability in the room to the right of the room with the second switch (sigh, I should use a map for references. If you are really interested, just ask for more info. I'll be in IRC and on the forums).
130000: Beware the super-complicated Peppermint Palace rooms. Really, this map is full of treasures and complicated rooms...
147000: Luck-manipulating this purple guy to do the pan-throwing move would possibly save time since he might not be in the way later, in the section with the Pengies. He doesn't disappear after he's gone off-screen.
~159000: This is one of the most questionable parts in the run. I get Smash and navigate through a underwater room with breakable blocks that I could have broken with Hammer for a shortcut. I thought that I would gain this time back from the section where I used stone to fall faster and from the faster boss fight. But I think the fastest way to get the Mirror Piece from Gabriel (shark boss) is just to go there with Missile and get the Parasol ability there, like in the any% run.
166100: Too bad comboing the Flamer towards the Minny is impossible by a few pixels, so I could have gotten UFO from that mix.
167000: Quite a surprise that Cupid serves a purpose in this run, hm? :D
~169000: The Kracko (cloud boss) battle is another questionable part. I couldn't manipulate him to do the lightning move that makes him come closer to the ground so I can finish him off earlier. Well, I could manipulate him but at the cost of having touched the ground in stone form mid-battle, which costs time because Kirby goes up in the air if he transforms back while on the ground which ... costs time. In retrospect, I should have spent more time trying to manipulate him.
174000: Now to go for the treasure I left in some room of Candy Constellations. It might be able to save some time by not having to visit this room and having to wait at the warpstar, if you go for that treasure while you first visit this map, even at the cost of a good placement after the boss fight in this world and at the cost of your wheel ability. I originally planned to go after another treasure on the same map, but that was slower than to L-warp out and go to the gate of that map.
179000: I once forgot to visit the underwater room after this treasure, so I had to redo 15000 frames after I found out. The biggest fear I had while making this speedrun was that I might end up not getting 100% for some weird reason - even though I followed all the criteria - or because I failed to visit one room. I can remember me sitting in front of the emulator in a panic and checking if every room I should have visitted according to my plan flashed after this incident.
181300: Welcome to the most annoying part in the entire speedrun. The buddy kirbys I call here need to be in a good position so that at least two of them are inhaling the big block. I tried to manipulate them for two or three months, although I didn't try every day. That was a real pain in the ass... I kind of gave up to get a perfect luck situation here, so I inserted idle frames. And it worked! I found out that the way the buddy Kirbys appeared after the phone call was somehow only dependent on timing. That wasn't it all though, I needed to 'manipulate' them again to be not in the way after I visited the room where I mixed wheel... well I tried until it worked. Lol.
I was happy it finally worked out well.
Stay tuned for the end

Generally

The way I controlled missile throughout the run is not optimal. I noticed rather late that Missile Kirby's diagonal speed is basicly horizontal and vertical speed added together, so I don't think you have to navigate nearby walls as I did, you can gather more speed for curves and you can possibly perform weird movements for straight distances (although I don't think that would be particularly entertaining).
When I discovered this I didn't want to change the way I navigated Missile to keep the constancy in the run. I wouldn't be surprised if you could save some seconds with this new way in missile navigation.
Also, this run is theoretically improvable by >1 minute if you could somehow luck-manipulate your buddy Kirbys to get Magic and use it all the time, so you can acquire the abilities you need out of the blue. But that requires insight into the inner workings of the game and I'm not this technical.
Also, you could save many seconds by using soft reset (after acquiring treasure or mirror pieces).

Future

I don't plan to do any new Kirby Amazing Mirror run in the near future, especially will I not do a new 100% run. This was way too time-consuming... :)

Closing words

Thanks to everyone who posted in the Kirby Amazing Mirror thread, and thanks to Comicalflop for motivating me. Also, I'd like to thank the Japanese Kirby Super Star TASers (smns72, OGA, WaddleDXsp, yukihis, persona4432, and everyone I forgot, lol) at this point, even though they didn't actively contribute to this submission, I gained quite some experience while TASing Kirby Super Star and trying to improve their work. Thanks to girfanatic501 for getting this 100% idea rolling in the first place and for finding the wheel-from-golem trick. Thanks to SirVG for contributing in the thread.
Hope I didn't forget something important. Otherwise, enjoy the run. ;) If you've got questions, ask them.

adelikat: Accepting for publication along side the existing publication as a 100% category.

Raiscan: Sucking up run and absorbing its abilities.


zem
Joined: 10/3/2009
Posts: 32
great. I especially liked -
  • dropping your power to kill bosses with their own debris then getting it back
  • using cutter to fall quickly
  • juggling enemies with air to get two together
  • juggling enemies with air just because you were going that way anyway
Skilled player (1328)
Joined: 9/7/2007
Posts: 1354
Location: U.S.
Hey this run isn't starred. What's the deal with that? Did you use all of the abilities?! I know you used at least 6 different abilities.
Joined: 7/2/2007
Posts: 3960
I never saw him use Plasma at the very least, so no. There's probably others as well (did Umbrella get used?).
Pyrel - an open-source rewrite of the Angband roguelike game in Python.