Hello everybody.
I am writing a message here to keep you all updated on a big new trick that's been found in Battletoads. Additionally, I want to get feedback from other people as to whether or not this particular trick would be acceptable for a non-game-end glitch TAS of Battletoads.
Background:
For some background context, you can read the description on this userfile movie here:
http://tasvideos.org/userfiles/info/66281983305428941#Comment665
But anyways, here's the shorthand version: A few months ago, Koorvex discovered some long-lost videos of an unfinished Battletoads 2P warps TAS that was abandoned sometime in 2012 or 2013. This TAS contained a different strategy for level 10, which I was able to include in the new TAS of Battletoads that was published, which saved about 2 seconds over the old run.
Recently, Koorvex emailed Zlomus to ask him if he had any other information about the videos. In response, Zlomus sent him a movie file of a movie from 7-8 years ago where the checkpoint glitch is used in level 3 to warp directly to level 5, skipping level 4 entirely!
Technical Details:
Current 2P Warps TAS Strategy:
In the currently published 2P warps TAS, after the checkpoint glitch is activated in level 3 (which occurs when you die on the jets before hitting the first checkpoint), the game starts loading objects based on the values contained in certain memory addresses which normally wouldn't be used to load objects. One of these addresses happens to contain player 2's inputs on the last frame (represented as a number from 0-255), which lets us control the ID of the object that spawns. Using this, we spawn the object with ID 0X7F. Whenever this object is loaded, the game starts a countdown to the next level, after which we move on to level 4, skipping the rest of the turbo tunnel.
Current Any% TAS Strategy:
Next up, we have the current "Any%" TAS of Battletoads (this is more accurately referred to as the "game-end glitch" branch on the website, but i'll write any% here anyways so people reading this post who aren't familiar with the current Battletoads TASes understand that this TAS represents the fastest possible way to beat Battletoads).
Much like in the 2P warps TAS, we start off by activating the checkpoint glitch in level 3. This time, however, we make it so that an object loads which has a corrupted function pointer. Thus, when the game tries to follow this pointer, the PC gets set to some invalid instruction left near the end of the ROM.
From here, the PC keeps executing invalid instructions that do nothing except advance to the next instruction. When the PC gets high enough, it jumps back to the beggining of the code in the ROM, which happens to be the start of the function that loads the end cutscene. As a result, the game ends, and Battletoads is beaten in a short 2 minutes without ever fighting the dark queen!
New TAS Strategy:
Lastly, we arrive at the TAS re-discovered by Koorvex, which is the reason for this post in the first place. In this case, we do the checkpoint glitch in level 3 to start things off, just like in the other TASes. Then, we make an object load with a corrupted function pointer. When the PC tries to jump to the first line of code in the object's function, it instead jumps to the first line of code of the function that gets called when we activate a warp portal. Because of this, the game thinks that we touched the warp portal (even though it was never even loaded into memory), and we jump ahead to level 5, skipping level 4 completely!
Issues of Validity:
Given the nature of how glitches are used in all 3 TASes, there are certain issues that will arise if a new 2P Warps TAS is made which uses the new trick to skip level 4. The 2P Warps TAS is supposed to represent the fastest way to beat the game without activating the game-end gltich, which in the past meant that the checkpoint-glitch could only be used to load objects into memory, not to make the PC jump to some new point.
In contrast, the any% TAS (or GEG TAS) is allowed to do whatever it wants, so it makes the PC jump to a spot in code that will let us reach the credits.
Basically, the central issue is this: TASes of the form "Any% No X" typically require the TASer to beat the game as fast as possible without using some much faster glitch or trick. For example, Ocarina Of Time "Any% No Wrong Warp" tried to beat Ocarina Of Time as fast as possible without using the wrong warp glitch.
The 2P Warps TAS has essentially been the TAS "Any% No Game-End Glitch", since this was previously the fastest way to beat the game without jumping to the credits. However, if both the any% TAS and a non-any% TAS use a PC jump to change execution, with any% going to the credits and non-any% going only 2 levels forward, would this be considered an arbitrary distinction that should prevent this glitch from being allowed?
Returning to the example of Ocarina Of Time for a moment, an ACE exploit was found in OOT last year that let users warp directly to the credits. For this reason, an Any% TAS was made of OOT which uses ACE. However, TASes of OOT on this site are not allowed to use ACE to, for example, arbitrarily give link all items and make him an adult, and then have him beat all adult temples and then ganondorf. This category would be considered to arbitrarily allow a glitch but not use it in one spot where time could be saved in order to make a different category, which would make it too similar to Any% to qualify as a seperate category (so it would only be acceptable as a playaround).
Based on all of this, this leaves one final question: Should the current Battletoads 2P Warps TAS be allowed to execute a jump to the warp portal code in memory?
I look forward to getting feedback from this, and hearing what you all think :)
Be sure to post whether or not you think a PC jump to skip level 4 should be allowed in the Battletoads 2P Warps TAS down below!