Technical details:
  • Emulator used: Bizhawk 1.11.8 (Glide64mk2 / HLE)
  • Heavy glitch abuse

Overview

Donkey Kong 64 chronicles the adventure of five simians to defeat the evil reptile King K. Rool. To get the final key to fight the King you must collect 100 Gold Bananas (think Super Mario 64 stars), thousands of loose bananas, two special coins hidden behind classic arcade games, 15 banana medallions, 4 battle crowns, dozens of banana coins, and more. The game has even made it into the Guinness Book of Records for “Most Collectable Items”.
We’re just going to skip all that.
There are two main goals in this run: spawn K. Rool, and kill K. Rool. The former requires the third and eighth key in this game - keys 1, 2, and 4-7 are supposed to be “required” to get key 8. The latter requires getting enough abilities for the Kongs that they can win the 10+ minute fight.
Central to this run is a trick called “Main Menu Mode” (MMM) that will be detailed below. Freeing all the Kongs and buying moves turns out to be a very time consuming process, but through MMM that can be skipped. Much of the start of the run is devoted to setting up and executing MMM. This includes unlocking seemingly useless features on the main menu, notably a Rambi minigame and the ability to re-watch cutscenes.
The final time of this run is slower than the best real time runners. This is for three reasons.
  • RTA timing is about 33 seconds shorter than TAS timing.
  • The Wii U Virtual Console version has minutes worth of less lag.
  • Unlike this TAS, real time runs start with main menu features already unlocked. As is standard, I avoid using dirty SRAM. This makes for a more entertaining run with less questionable validity. This choice costs on the order of 4.5 minutes.

Key Techniques

Orange Clip: DK64 is a laggy game, so the devs made you go faster in lag to compensate. By throwing orange grenades, you can cause lag spikes which quickly accelerate you and allow you to clip almost anything. These are used many times throughout the run because of how fast they are to set up. However, on average they save less than 4 seconds per clip - there are so many different ways to clip in this game that they are really only used for the bit of extra speed.
Moonkick: Cancelling an aerial attack (usually with the ground) and chaining it into a kick allows DK to elegantly gain height for a few seconds. Very useful and quick form of movement.
Skid Jump: Reversing direction and jumping right afterwards will allow a Kong to jump in a skidding animation, which they can then act out of in midair. This is useful for quick extra height.
Ledge Clip: Many ledges in this game are not well made and can be fallen through if you land on the edge correctly.
Tag Barrel Storage (TBS): There are many ways to do this trick, but the easiest one is to skid jump into a barrel, and leave crouching animation just before entering. This allows you to move around while in the tag barrel, along with a myriad of other side effects not featured here.
Telegrab: While in TBS induced invisibility (here activated by tagging a Kong outside of range of the barrel), climbing up a ledge can dramatically increase your height. The amount of height you gain is based on the distance between the ledge you grab and the Y=0 plane. I am very much simplifying here, so if you want to learn more about the intricacies of this trick or other TBS side-effects there is a ton of content.
Intro Story Glitch (ISG): Watch the Intro Story in the Mystery Menu, and cancel it ASAP after the scene starts loading. You’ll kick off an incredibly complicated glitch - so intricate that there had to be a 76 video YouTube channel dedicated to it ( https://www.youtube.com/user/IntroStoryGlitch ). See the section below.

Intro Story Glitch and Main Menu Mode, AKA “What am I watching???”

While ISG (see above) is active, a lot of weird things start happening (you may immediately notice oddities with music not playing or playing in the wrong areas). The best way to think about things is that the Intro Story, a 5 minute cutscene, is “playing in the background”. Whenever there is a fadeout in the intro, the game will try to “pull you in” to the intro the next time it sees you in a cutscene. Successfully navigating around with ISG requires avoiding cutscenes or canceling the “pull-ins” with properly timed loading zones (this will usually play a weird cutscene upon entering the next area). At the end of the intro, you gain control in DK’s house, at which point the effects of the glitch go away. The important thing to remember here is there is no way to speed up or slow down the intro story - all your actions must be based around a global timer.
If you are on the main menu when you get “pulled in”, you’ll be in “Main Menu Mode” after the intro story. This prevents you from pausing or losing health. It also keeps the state you were on in the main menu into the file. Notably, the Rambi Arena minigame gives you almost all of the moves in the game. By playing Rambi Arena and then entering MMM, you have all the moves you need to beat K. Rool without having to free the Kongs. This is such a huge benefit that it is worth getting the 6 banana fairies and Rambi crate needed to unlock the arena.

Route

After starting the game, we head to Cranky’s to spawn the training barrels and then complete two of them. This gives us the ability to throw oranges (speeds us up and is important for MMM), and also the ability to pick up barrels (needed for the K. Rool fight). There are several glitches to escape the rest of the training grounds, but an orange clip ends up being the fastest.
Next, we beeline to Banana Fairy Isle to get the camera. This lets us take pictures of fairies, which helps us unlock Rambi Arena for MMM. We immediately take a picture of a nearby fairy, activate a warp at the back of DK isles for later, and do a series of clips into Jungle Japes. There we get a fairy in a back cave (landing in the water after the photo gives us control), and transform into Rambi which is required for his arena. With two fairies in hand, we reset.
Back on the main menu, our 2 fairies allows us to activate ISG. We now have 4+ minutes to get as much done as we can while waiting for MMM (any fadeout sooner than the one used in this run wouldn’t save any time). A telegrab and a ledge clip lets us quickly get into factory before the first IS fadeout, and we enter Factory at the right time to cancel the fadeout with a new area load.
As mentioned, fadeout cancels tend to have strange effects upon reloading - here, we get kicked right back out to the lobby. After re-entering and watching an intro cutscene, we activate Chunky’s distress cutscene while kicking back into the exit portal to skip the cutscene and cancel another fadeout (which brings us right back to Factory).
While in Factory, we get another fairy, then pause exit to leave without watching its cutscene. We then demonstrate how the road to Helm is paved with good ascensions, and quickly snap another fairy in midair just before entering the lobby. Helm is demonstrated to have questionable solidity. This is not the fastest route through the area, but there are some seconds to kill and it gives a few more oranges for later. Critically, orange damage is used to skip the Key 8 dance cutscene, which prevents a fatal fadeout which would otherwise doom this route. After two more conveniently placed fairies makes 6, we are back to the main menu to finish off MMM.
Upon returning to the file, we again escape the training grounds and head back to Factory for Key 3. The Troff & Scoff portal by Chunky is chosen since it allows us to leave the quickest, since we cannot pause. Also since we cannot pause, there is no way to skip the Mad Jack intro cutscene.
Mad Jack is a deceptively difficult fight. For him to move at maximum speed you always need to be two squares ahead of him. Furthermore, his switch spawning algorithm means you need to be approaching a platform in a very specific way to get a very fast location. And of course, RNG and lag are always issues.
After Factory it’s a short trip to K Lumsy to turn in the two keys, and then on to K. Rool. This fight relies a lot on lag reduction, as well as proper timing of when to engage with him. For example, dropping lights at exactly the right frame on Diddy’s phase forces K Rool to immediately run to the next spot instead of bumbling around in pain first. After over 11 minutes we’re finally done.

Misc

DK64 emulation has been awful for a long time, but the latest revision of BizHawk is a major improvement. This run was created because this game is way overdue for a run. However, some issues remain, especially around inaccurate loading times and lag (since lag effects speed this is very important and even changes some movement strategies). I tried to avoid abusing emulation inaccuracies, such as not using artificial photo lag to clip after the second fairy.
I am open to making another run in the future if lag emulation significantly improves. As with most first-edition TASes, I know things at the end of the run that could have improved things earlier. Known movement optimization techniques and a small route tweak add up to around 4 seconds of improvement for the next iteration (ignoring the larger time loss from better lag emulation).
There are a lot of things I skimmed over in this description, even as long as it is. If you want to learn more, please get in contact with the DK64 community. If you want a sampling of what a 101% TAS would look like, I have a low-optimized demonstration here: https://www.youtube.com/watch?v=8nIfy8LO054 - check it out if you can handle bad video quality.
Mega thanks to Isotarge and Cronikeys for their work on emulation for this game. Hats off to Exchord for discovering so many things about ISG including MMM, as well as telegrab and moonkick. And thanks to everyone else who has helped or advised who I didn’t name.

Fog: Judging.
Fog: I'm currently unable to sync this TAS with either 1.11.8 or 1.11.8.2, as Donkey Kong fails a moonkick in the lava room and dies.
I'll need more information from RingRush to figure out what's going on here.
Fog: This has been sync checked by Spikestuff, so the judging can continue.
Fog: I've synced this personally now, using a pretty under-powered Windows tablet.
This has definitely been a long awaited TAS, with a lot of work put into it by not only RingRush, but also Isotarge, Cronikeys, and the BizHawk developers for making it possible for this game to be TASed in the first place.
The overall quality of the TAS is top notch, but there are a few things which should be addressed:
Normally in regular speedruns of DK64, runners would use dirty SRAM from the cart (as the cart can not be cleared of certain progress without external hardware). Because of this, this run decides to start with a completely clean slate, and unlock everything needed for ISG and MMM to work properly. I feel that this is actually more of a benefit for the TAS, as it provides greater entertainment value compared to just using dirty SRAM to be equivalent to console speedruns. Any future TASes that would want to obsolete this particular TAS would also need to start from a clean SRAM if it wants to be published here.
Secondly, in the course of waiting for this particular run to be judge, a new trick was discovered which can possibly make this particular TAS obsolete. Because this trick is in it's early stages of routing, attempting to find where it would be most applicable, I'm not going to delay this TAS to implement this new trick into the run for a small time save. A new submission with the new glitch can be submitted as per usual in order to obsolete this particular run.
With that being said, I'm accepting this run for Moons! Great Job!
feos: I'll be working with thecoreyburton again, to help him encode the crap out of this run, as usual. Don't expect this soon though, we'll be developing a resync workflow to use GlideN64.


Glitcher
He/Him
Joined: 3/24/2007
Posts: 216
Location: London, U.K.
Wow! This is a long time coming. I've been waiting for a DK64 TAS for years, and I'm glad that RingRush finally delivered. His channel has a great assortment of glitches; it's high-time I revisit it for an update. Yes vote!
Joined: 2/28/2012
Posts: 160
Location: Philadelphia
What a surprise to see a TAS of this notoriously finicky game! Very well done, RingRush (and Isotarge and Cronikeys). Yes vote.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4035
I could never get into this game (it's not for me), but I've been looking forward to a good TAS for a while. This was even better than I expected. Echoing the "Well done" for RingRush, Isotarge and Cronikeys!
Experienced player (608)
Joined: 10/23/2004
Posts: 706
Great to see this on the workbench. Voted yes and am hoping eventually the K Rool fight can be skipped as it was far less interesting than the rest of the run. P.S. Thanks for the commentary video, that was very helpful for those of us who have not kept close tabs on strat development.
Current Project: - Mario Kart 64
Joined: 9/27/2012
Posts: 8
Location: USA
due to a new discovery being able to clip through a ton of walls in this game through just walking, this is now unfortunately obsoleted. still a great run, though. voted yes the new glitch: https://www.youtube.com/watch?v=NcvaFmXg0Iw
Experienced player (520)
Joined: 4/14/2009
Posts: 116
I used the word obsolete but it's a bit strong. The new trick will save on the order of 15-20 seconds (still a lot to be evaluated), which is notable but not stunning. Main difference is some of the orange clips will be replaced by phasewalks (these can't be used in all places), the Mad Jack cutscene will probably be skipped by phasewalking to void out and then warping back to T&S, and some K Rool strats will vary because you can warp to the center faster. I will probably redo this in a month or two when the dust settles, but I hope this run can still be accepted for now just in case.
Player (117)
Joined: 5/13/2009
Posts: 700
Location: suffern, ny
I remember this game. There was way to much stuff to collect. Even though I loved it, I never could get through it. It was far too... Overwhelming. Anyway, i think this was Great! Nice to see all the glitches, and you explain them well! Yes vote from me!
[19:16] <scrimpy> silly portuguese [19:16] <scrimpy> it's like spanish, only less cool
Fog
Emulator Coder, Experienced player (640)
Joined: 4/5/2014
Posts: 459
I'm not able to get this to properly sync for me, as DK fails to do the moonkick inside the lava room. Any ideas?
Post subject: Sync Check.
Spikestuff
They/Them
Editor, Publisher, Expert player (2631)
Joined: 10/12/2011
Posts: 6435
Location: The land down under.
Synced using BizHawk 1.11.8. Final Frame:
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Site Admin, Skilled player (1250)
Joined: 4/17/2010
Posts: 11473
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Corey got it to sync as well, it depends on the plugin, and even on the resolution, probably on something more though.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Active player (406)
Joined: 3/22/2006
Posts: 708
The final boss is really tedious, but everything else is really fun to watch. That moonkick cracks me up a lot. Yes vote :)
Joined: 10/14/2013
Posts: 335
Location: Australia
feos wrote:
Corey got it to sync as well, it depends on the plugin, and even on the resolution, probably on something more though.
Yeah, I messaged Fog about it who suggested it might be related to CPU speed. I played around with a few different emulation related settings and found that the most reliable sync comes from configuring the emulator to use Glide64mk2 running at 640x480 prior to loading the ROM and movie. In regards to the encode, sorry it's taking a little bit of time. Feos and I spent quite a bit of time working back and forth in order to get it to sync consistently and reliably at higher resolutions and on more accurate plugins. Feos found a way around the problem and I'm about a third through the 4K resync using GLideN64. Looks like it'll be a smooth journey from here, but let's not jinx it!
I'm not as active as I once was, but I can be reached here if I should be needed.
Joined: 5/13/2013
Posts: 180
The second I watched this I went bananas. I figured it was time I stopped monkeying around so I watched this. This is more fun than a barrel of---nevermind.
A wise man once said "Damn, that's one hell of a steak."
Editor
Joined: 11/3/2013
Posts: 506
Any updates on processing this run? Is Glide64 that much of a problem?
Joined: 10/14/2013
Posts: 335
Location: Australia
The short answer is yes. It's taking this long because it's proving to be a difficult run to encode with quite a number of problems and setbacks (including graphical problems and also sync problems), so it's taken quite a lot of time to fix them up. Here's a proper detailed update: Regarding sync, running the game at 640x480 using Glide64mk2 is the only guaranteed way I've found to make it play through from start to finish. Using higher resolutions or different plugins results in desyncs at various points. As an example, with GLideN64 there were 97 points where this happened. That being said, I didn't try every possible resolution, just the relevant ones to the syncing and encoding process. I have a few thoughts and can speculate as to why this happened - Fog suggested that it could be tied to CPU speed and he's definitely more versed in this than I am, so I'd trust his judgement. Feos worked diligently to make a series of lua scripts based on information provided by Isotarge for parsing the run (which was run using the movie with Glide64mk2 at 640x480, to ensure sync) and then detecting a desync (which was done using the desired dumping plugin at the desired resolution - which also meant this process was slow). When the script detected a value that didn't match the original movie, it'd pause the playback and alarm. I could then use TASStudio in a separate instance of Bizhawk to save a state from the Glide64mk2/640x480 movie a frame or two before the desync and use that to resume the movie correctly. When loading a savestate, for several frames it outputs the frame the savestate was saved on. This means despite using GLide64 at a high resolution, the frame that was displayed was from Glide64mk2 running at a much lower resolution. After some more testing, it was deemed that an offset of 5 frames negated the problem. Feos wrote two more scripts this time, the first was for AVI dumping. It checks the directory for savestates and loads them at the specified frame, so the run could be dumped in one shot and sync correctly. It also has an offset variable that dumps x frames past the desired frame, pauses dumping, loads the state and proceeds x frames and the resumes dumping (where x is an integer). The second script was used for offsetting savestates back x amount of frames, to save me re-saving them all if I needed to go down that route with the offset. There were still a number of issues (such as states being two frames apart in certain situations, causing the offset script to loop or when done manually, causing incorrect frames to be in the output) that had to be resolved, but as of a week ago this has all been resolved. In the time since then, I played back the run (both my GLideN64 dump and my reference Glide64mk2 dumo) and noticed a number of graphical discrepancies between the two. I went back and redid all of the above for Glide64mk2 - though without the testing and with knowing what I was doing this time around it was a much easier process. After that, I watched the run a couple of times and noted down anything that didn't look right or looked different between the two encodes and compared each situation to the console. In some situations neither was perfect and I had to opt for which was closest. I spliced them together at specific frames, had to fix the frame rate (because alternate sync had to be used for the dumping process to ensure there were no audio anomalies) and am currently in the process of watching a low-res encode I made to ensure everything went smoothly. I'm really sorry it's taken so long to do and I can't express my gratitude to feos enough for all his help. I don't want to give an ETA on this because I've thought it was ready twice now (only to discover things that needed to be tweaked or fixed) but provided there's no more nonsense, I should be ready to begin the actual encoding process today or tomorrow. I'll be uploading the 240p encode to my Youtube Channel privately later on today just in case anyone here can notice anything that isn't accurate to the console. I think it's all good (except for things that I've tried fixing but that can't really be helped), but if you or anyone else can find anything that needs to be fixed I'll see what I can do. Given the time it's already taken, we may as well get it right! :D Edit: Video removed as the run has now been published!
I'm not as active as I once was, but I can be reached here if I should be needed.
Joined: 10/14/2013
Posts: 335
Location: Australia
RingRush, do you have a preference for the screenshot for this run?
I'm not as active as I once was, but I can be reached here if I should be needed.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15544
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [3411] N64 Donkey Kong 64 by RingRush in 27:37.60
PCachu
He/Him
Joined: 10/1/2009
Posts: 166
thecoreyburton: Job just poked his head out of the Old Testament, read your description of the encode process, and said, "Damn, son, I don't know how you put up with this."
nevon
He/Him
Joined: 6/3/2017
Posts: 1
Location: Stockholm, Sweden
RingRush and thecoreyburton, wow what amount of work you put into this. Amazing, I'm really impressed, thank you.
Joined: 10/14/2013
Posts: 335
Location: Australia
I'm not as active as I once was, but I can be reached here if I should be needed.