Table of contents
General notes
- Uses GBAHawk 2.1.3
- Rerecord count - 6969
- Uses glitches and exploits to save time
- Performs a major exploit to skip large portions of the game
- Note: the SHA1 does not match with the Rom. The movie file is made to sync with the US version of the game.
Introduction
"Kim Possible 2: Drakken's Demise" is the second Game Boy Advance game based on the Disney Channel show "Kim Possible" (which I have not seen). The game is a 2D platformer where you mainly control Kim with the game being split up into 4 separate chapters each with their own story. It's honestly a pretty good game which can't be said about most games based on 2000's Disney Channel shows. I am the current RTA WR holder and I started making this TAS with the full intention of playing through the whole game. In this run however, we will not be seeing the full game as it is possible to skip most of the game.
General game notes
- I used the US version for this run. This is mainly because the US version has an exclusive exploit which I can best describe as "tutorial desyncs". There are instances in the game where you have these blue question marks which give you tutorials. You hit these and then you have to watch a ghost perform whatever action the game is teaching you about. In the US version, if you pull up the gadget menu on the same frame as hitting a tutorial, the timer and inputs for playing a tutorial will play out but the game will be soft paused and you will be able to freely use the gadget menu. When we exit the menu, we desync the tutorial as the tutorial tries to play out but because you messed up the timing with the gadget menu, the tutorial won't play out correctly. You can even make the tutorial Kim use the wrong gadgets which can lead to some amusing results. We can use this to reduce lag frames and to pause cycles which is useful. This glitch does not work in the European/Japanese versions which I find funny because those versions were released way later than the US version (the European version came out a whole 18 months after the US version) and far bigger glitches and exploits (which are used to full effect in this run) were not fixed.
- The European version has a language select screen after the company logos. Weirdly enough, this actually allows the European version to start faster as the game loads the intro faster after skipping the language select screen than it does after the last company logo in the other versions. This however does not make up for the removal of tutorial desyncs, making the European version slower overall.
- The Japanese version is the slowest as not only are tutorial desyncs patched but the Japanese version also has an extra company logo.
- The goal of this run is to beat the game as fast as possible using any means we have access to. While there is a way to go straight to Drakken after the first level, you don't actually beat the game when you do so. I would call this a "normal Any% run" but this run is not normal to say the least.
- Kim is faster on the ground than in the air so I try and stay on the ground as much as I can as well as minimise air time whenever possible. In order to jump with minimum height, you weirdly have to perfectly mash the jump button a handful of times. There are times where it is faster to get a quick burst of speed with the grappling hook which is an instance where jumping is preferable.
- Taking out enemies is fairly slow so I typically opt to gum them up to walk past them or to find another way to go through them without fighting.
Level Comments
Here, I am going to make some significant notes about the earlier levels.
1-1
- The first thing which happens in this level is that I perform a tutorial desync. I pause the game for a very long time as I am setting up a platform cycle for later on in the level.
- The grappling hook is a fairly complex gadget. You generally want to aim it straight up as it will position you more favourably for the next jump. I use it early on to skip a ledgegrab and I try and use it as little as possible whenever I have to use it.
- I perform another tutorial desync choosing to desync the tutorial with gum. This saves frames compared to not doing a desync and it is amusing as the ghost Kim just jumps and chucks gum instead of grappling along the ceiling.
- Near the end of the level, you have this vertical moving platform. This platform moves on a consistent 6 second cycle. I used tutorial desyncs to set up the cycle favourably and the cycle I got is the equivalent of skipping one cycle in an RTA run.
- It is still possible to just barely make this without tutorial desyncs although the cycle is less favourable since as far as I could tell, you can only just barely ledge grab onto the platform which is less optimal than jumping on the platform.
1-2
- There are long gaps where you are supposed to grapple over but you can just about jump over them without the grappling hook.
- There are also numerous smaller gaps you can short hop over.
- There is a long monkey bar halfway through the level. I tackled this by jumping as far as I can before grabbing on and then I drop off the bar to get hit by a fish.
- At the tower near the end, I swing off the first pole and then use the grappling hook to get on the last pole. I then use the grappling hook again to skip a ledgegrab.
- I do a ceiling boost with the grappling hook to get into the end trigger faster. Switching gadgets as late as possible was oddly necessary as otherwise, the grappling hook would cancel.
1-3
- I start off by making a gum trampoline as it is faster than passing through the enemy.
- For the statues, kick attacks can hit them twice but they can only take damage in a certain amount of time. I cannot jump too quickly or my kicks won't work so I carefully time each jump and kick.
- I do a death warp through one of the statues as it is faster than breaking the statue. Getting extra health would waste time and you don't have enough room to consistently jump and hit the statue.
- The second to last room has spike cycles. I unfortunately had to wait for a cycle and I was unable to find a way to skip the cycle.
1-4?
It's time for 1-4, this game's Rufus level... Or at least it would be but this is where things start to take a U turn. Instead of playing 1-4, I start a new save file and go back to 1-1. 1-1 is the same until the end where I pause the game on the last possible frame before the ending cutscene plays, I quit out of the game, I reload my first save file and then I go back to 1-4. This not only takes me to 1-5 but it also skips a cutscene that plays before 1-5. This overall saves around 7-8 seconds compared to playing 1-4. This leads me nicely to the next section where I will explain the main exploit which makes this run so broken.
End Cutscene Storage
Now that we've made it to 1-5, this is where the run becomes completely bonkers. So what I will be doing for most of the rest of the run is an exploit known as "End Cutscene Storage" which will basically allow me to skip to the end of the game. You already saw it on 1-4 but because it is going to be used a lot more and it is going to lead to even wilder results, this is a good time to explain it. This is basically how End Cutscene Storage works:
- Whenever you pause the game, the game runs for one frame before it actually pauses. The whole game is still running and you can still move on this frame. If you hit a cutscene during this one active pause frame, it will store the cutscene in RAM.
- If you go to another level (which does not start with a cutscene), it will attempt to play out the cutscene. Kim's movements and the timing to skip a cutscene will play out, even if you are in a completely different level. The one time the cutscene won't play out is when you enter a level which starts with a cutscene as that cutscene will override the stored cutscene.
- Some cutscenes save your game. If you store a cutscene that saves the game, your level counter will be increased by 1. Perfectly fine on paper but this can be exploited heavily.
- It doesn't matter if you are on the furthest level to do this, this number increases whenever the game saves. This can be in the Global Justice Sim (level select) or even in the tutorials.
- Skipping end level cutscenes will take you to the end level card as long you play them in the story mode. You will be taken to the next level after you skip these.
- Storing boss End Level Cutscenes and then skipping the cutscenes will take you to the ability/gadget unlock screen. After you skip this, it takes you to the next world. It doesn't matter what level you are on, you are going to the next world. This works in the story mode and in the Global Justice Simulator.
- If you try skipping world 4 using this exploit, the game will softlock after advancing through the unlock screen.
- If you perform End Cutscene Storage on one save file and then go on another save file, the end cutscene storage will update the progression on the new save file rather than the old save file. This is how this exploit becomes really broken.
- If you use End Cutscene Storage on a tutorial level, it will load a duplicate of the tutorial menu rather than the end screen (this applies to normal
And that is the main exploit is this run. You can store cutscenes due to a single gameplay frame during pausing and then you can use those stored cutscenes to skip levels and even worlds on a different save file.
The broken part of the run
Now that I've ran down how the main exploit in this run works, this is what is happening throughout the rest of the run:
- I have my first save file on 1-5. 1-5 is a very short level, it has End Cutscene Storage and it is a boss level, meaning that it can take me to the next world. This is ideal.
- I first get End Cutscene Storage on 1-5 and then I go on my second save file and I go to the tutorial. End Cutscene Storage plays out and this allows me to skip 1-1 and unlock the Global Justice Sim. I can't just go to 1-1 because it has a cutscene which overrides End Cutscene Storage and the save file isn't past 1-1 since I never fully finished the level when I last played it.
- I then get End Cutscene Storage on 1-5 again but this time, I go on my second file and I select 1-1 from the Global Justice Sim. This allows me to skip to World 2.
- I quit out of world 2, I go back to my first file and then I repeat the same thing 2 more times to skip Worlds 2 and 3.
- When you quit out, you go back to the Global Justice Sim which ends up putting you on the early Drakken fight option. You could fight Drakken then and there but that doesn't beat the game so I do not do that in this run.
- After quitting out of 4-1, I go back to get End Cutscene Storage but this time, I enter the tutorial rather than 1-1. This gives me the tutorial menu duplicate rather than the upgrade screen. This allows me to skip one level in the world since I can't skip the whole world. If I went to 1-1, I could still skip one level but I would have to reset the game which takes a lot longer.
- I repeat this exact process three more times to get me onto 4-5, the final level.
4-5: Shego and Drakken
- Technically, I could do End Cutscene Storage one more time to skip 4-5 and the game will consider itself completed but that doesn't feel genuine and after seeing the same thing over and over for nearly 4 minutes, it's about time you guys saw something more interesting.
- Against Shego, my strategy is to get a spring kick on her (Spring kicks deal triple damage compared to other attacks) and then quickly get two jump kicks on her, using my grappling hook to cancel the kick. Shego can only take 3 hits before gaining intangibility so I use this strategy to get 3 quick/powerful hits on her and then I manipulate her with a jump to punch me, so I can reset her vulnerability and spring kick her out of the punch. I do this 4 times to take her out quickly.
- At the beginning of the fight, I also manipulate Shego to throw out a punch so I can spring kick her. She is usually good at dodging spring kicks so finding a way to guarantee a spring kick was key.
- In phase 1 of Drakken, I start off by waiting for a bit in order to manipulate Drakken's pattern. If I don't wait, he would have charged at me which gives him far worse positioning throughout the fight so I made sure he didn't charge at me. By waiting, I manipulated him to go for punches which is more preferable.
- I start off Drakken phase 1 with a spring kick and for the rest of the phsae, I just spam jump kicks. I spam the jump button as quickly as possible in order to get as little jump height as possible in order to maximise how quickly I attack Drakken. Drakken attacks me and getting hit by hit is faster than avoiding the attack.
- In phase 2, I jump kick up to Drakken and I use the grappling hook to cancel my attack, allowing me to hit Drakken twice with each jump. I run under Drakken in order to prevent him from attacking me. I also mix in some spring kicks to maximise damage output.
- In phase 3, I am constantly swinging on the ceiling and jumping off as quickly as I can in order to keep attacking Drakken. I carefully position myself so that Kim doesn't bump into Drakken while swinging as that cancels the swing. The grappling hook also has a bit of cooldown after each use so I have to work around that limitation. Drakken is too high for me to use spring kicks so I have to rely on jump kicks.
- After taking out Drakken, we have the ending cutscene since I'm playing the story mode. Unlike other cutscenes, you have to skip dialogue manually. With how much Kim was teleporting, it's no surprise that she managed to make it to her date on time. After this cutscene, timing ends and you get the credits.
- Regarding the dialogue, the dialogue is fastest on English. Spanish has the same amount of textboxes, French has one extra textbox, German has two extra textboxes and Japanese has three extra textboxes.
Conclusion
And there we have it. Kim Possible 2: Drakken's Demise in 8:07 (7:34) RTA. Kim managed to cause Drakken's Demise in less than 8 minutes with no caveats. Despite the insane journey, this run definitively finished the game, making this a real Any% run unlike the Early Drakken run.
I am happy with how this TAS turned out. It's insane that a bug like End Cutscene Storage and how it affects the game managed to make it into the final game and how it never got patched, even though later versions came out long after the original US version and there were other changes made. I know this run is quite repetitive but I still hope it manages to be an interesting watch. I think there could be room for very minor improvements but unless something significant on 1-1 is found or a cycle skip on 1-3, I don't think there is much room for significant improvements. With that being said though, I have since found one improvement which can be made. Instead of going to 1-1 to skip worlds 2 and 3, you can go to 1-5 and 2-5 respectively to skip those worlds which would be faster. Doing that would save about 38 frames which is not a lot but it is something. This is a very fun game and it is insane that it has some absolutely insane glitches which allow you to skip large chunks of the game. However, it is also a shame that you just skip through the rest of this underrated platformer. Luckily though, this skips so much of the game that a full game TAS would absolutely be worthwhile and it is something I would like to do at some point, with the full game run having plenty of its own wild things. Regardless, this TAS is a symbol to show just how busted this game can be when taken to its absolute limits.
DrD2k9: Claiming for judging.
DrD2k9: I initially had some concern over whether or not playing the final round was necessary as the submission notes suggest that the game considers 4-5 beaten when using the glitch. But after clarificaiton the game would not run the final cutscene or credits if the glitch is used. So actually playing through is the better choice for any% as it actively triggers the credits.
Interesting use of the glitch to skip so much of the run. I would be interested in seeing a run which actually played through all the necessary stages as a "no major skips" run (which should also be eligible for Standard class).
This run looks good. Accepting.
fsvgm777: Processing. Dimon12321 is handling the encodes for this one.