My work here is truly done.

Introduction

Nobody is perfect. Not even me so I improved my earlier TAS by 11 frames in total, mostly thanks to the fact that Rash's (the green battletoad) actions are processed earlier than Pimple's. This means he moves/jumps/hits earlier and faster. Also to thank your votes for best NES TAS on my 1st and 2nd versions of Battletoads TASes (that I really appreciate and really wanted to show some love), I changed the background music again and changed the ending. Spoiler ahead.

Game objectives

  • Emulator used: FCEUX 2.2.1
  • Aims for shortest input (and fastest possible time to start the ending)
  • Entertains without losing a frame
  • Uses warps
  • Manipulates luck
  • Manipulates cutscenes
  • Manipulates sound effects
  • Manipulates objects (memory corruption)

Detailed informations

This is the fastest possible way to finish the game. I optimized the game to death. Changing the route to use Rash for every situations where I need to be fast, I could improve
  • 1 frame on level 1
  • 10 frames on level 3 by using only P2 to kick at the end before the jets
The reason I couldn't improve more frames earlier because there's 2 timed events: the spawn time of rats. They "spawned" every 16th frames, so in order to improve it, one would need to make a 16 frames improvement. This is impossible.
Now you may ask, why does feos added as co-author? While no input used by him, I used his lua scripts (his SVN trunk: https://code.google.com/p/feos-tas/source/browse/trunk#trunk%2FDisAssemble, look at LUA folder too) for observing subpixel positions and manipulating the ending. Also I used a lot of informations researched by him and his company (bonemage, AnS, DjtZlomus, DyLaX, I hope I didn't missed anyone out). Now let me explain how hard was to find the optimal ending.

The hardest challenge: the game manipulation

When you die with one of the toads while riding a jet, the game resets the "objects pointer" and when you respawn, it will erronously reads values from the memory and try to load them as an object. If you wouldn't press anything, it would load values like "FrameTimeCount, LevelId" and other values as an object.
  • The first problem: there's 80 different objects with different parameters. This means that any value it reads (except 0x00 empty input), it will be spawned as an object.
  • The second problem: most of the objects are very bad for this scene: either tries to warp the toads to the next level, or crashes the game instantly, but there's also many different ones like enemies with random parameters or changing between scenes (intro, reset, warp screen etc).
  • The third problem: the game is CPU/PPU cycle dependent. This means that the game very frequently processes undefined asm instructions and the slightest change in the movie file can make a desync at the very end.
  • The fourth problem: when you spawn the object, the object pointer (what values will it read from the memory) also changes, so spawning the very same objects in different order yields in vastly diverse results.
  • The fifth problem: understanding the conditions to trigger the ending.
You may ask, how comes I could manipulate the game earlier without these tools: this is because I used a visual test to replicate the events in the earlier movie and reimplement it with different order of spawning objects. But since I wanted to make the perfect TAS, I had to investigate and verify that I really finish it as fast as possible.
While I tried to test a lot of things (and I could assure you that the real rerecord count for this project is around 250.000 rerecords (I used turbo A LOT) ), I couldn't find any way to trigger the ending with fewer frames. Now I don't even think it would be possible. It would take much more time to manipulate all the addresses that the object pointer erronously spaws rather than spawning them through P2's pad.
Now here's how I win the game.
  • I suicide with one of the toads while riding on the jet.
  • I manipulate the RNG and game state (with various inputs before spawning and positioning) to make Pimple hit the air. The reason I used this is that it generates the fewest lag frames (and only P1 dies once which is required).
Now I had to manipulate these things:
  • Spawning objects that won't change later (some objects spawns with very limited timers therefore they will be switched with another "random" object)
  • Avoiding various objects ("end of level", enemies, things that modifies the object pointer)
  • Killing P1 to respawn while the spawned object 0x81 or 0x82 (AR, AL) to bring the "game over" screen stays before the next respawn.
Note that depending on when do you start the manipulation (the frame you respawned 1st), both the object counter and RNG and a few values will be changed. Most of the times, using the very same strategy (object wise) won't work with different start. There's no 100% strategy, just a verified technique.
A huge thanks goes to feos and his company for making these observations and documenting them and the tools they made that let me to optimize and plan the input to the manipulation. Without their works, this TAS wouldn't have this ending but much longer (ending starts at frame 3690!), and wouldn't be optimized it as possible. This is why I added feos as a co-author

List of techniques and oddities appeared in chronological order

Manipulating cutscenes/texts
Using different input, it's possible to save 1-3 frames by loading those texts that gives fewer lag frames.
Manipulating music/background
Pausing very fast alternating on thetwo joystick mutes the music channel. The sideffect is flickering the background on level 3.
Using Rash primarily instead of Pimple
Rash's action processed earlier than Pimple's so he used to leave the 1st level faster, to scroll the camera earlier, to use the jet, etc.
Synchronizing actions that costs lag frames
Kicking, dashing, brutal hit etc costs lag frames so hitting something with both toads in the same frame halves it.
Optimizing movement
Starting fast running earlier is always faster, but sometimes it needs different input (LR instead of UL, empty, UL).
Z-order mess up
Pressing left and right simultaneously brings up or down the player rapidly. Also used to get different subpositions.

Miscellaneous

I hope you enjoyed my final TAS of Battletoads and I would also like to thanks the guys @ #tasvideos for answering my questions regarding this TAS (you know who I'm talking about). Anyone asking, this is how you finish Battletoads with 2P without using continue.
See you until my next tas =)

Nach: Very nice improvement! Accepting.
Ilari: Uploading encodes I have...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
Location: 127.0.0.1
This topic is for the purpose of discussing #3983: MESHUGGAH & feos's NES Battletoads "Glitched" in 00:56.76
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
What da Frack?! The game trips out, then decided, "We're done here." Yup. That's a star.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
GhostSonic
He/Him
Joined: 3/14/2013
Posts: 61
10/10 Background could be bluer. Yes vote of course.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
Wow, now that was fast! It's really nice to hear that a game is completely optimized too. Yes vote, of course. Here's a temporary encode: Link to video
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
I muffin knew it! It was to good to be true that last run.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 2/20/2010
Posts: 209
Location: I'm in space
Oh, play it cool. Play it cool. Here come the space cops.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
I would otherwise be tempted to bring up the subject of "what constitutes game completion?" once again, but for some reason that I cannot fully understand, with this particular game it doesn't bother me at all. Therefore I voted yes.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
Isn't this glitch actually the only way to complete battletoads 2 player? Since otherwise you get stuck on the clinger winger level.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Warp wrote:
I would otherwise be tempted to bring up the subject of "what constitutes game completion?" once again, but for some reason that I cannot fully understand, with this particular game it doesn't bother me at all.
The ending scene (what you see in this TAS) is a special scene that only possible by executing a specific subroutine (the game end routine). This is the very last thing you can see if you finish the game normally. There's no indicators (unlocking new mode or something change) other than that you can press start (once the scene ends) and return back to the main menu (the same way if you finish it normally). Once you press start, all the objects will be depleted from the memory (once the main menu starts to load).
Patashu wrote:
Isn't this glitch actually the only way to complete battletoads 2 player? Since otherwise you get stuck on the clinger winger level.
Yes, it is. edit: Without using continues and avoiding game over screen, this is (since you can use continue once you die on the clinger winger level bug).
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warp: though now you don't raise that question, here I have something that proves the validity of such an ending. The game executes the very ending code, it is only a matter of WHEN and HOW it is being jumped to. The game's pointer gets broken and runs through RAM, then through open bus, and then reaches some numbers in the beginning of the ROM. These numbers contain the ending routine somewhere inside them. Game Over routine is somewhat related to it, so in the previous movie it also worked out. And after that code is executed, the game proceeds exactly as it does when the ending is reached the normal way. More details can be found here: Post #326882 Post #334078 Post #326684
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.
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
MESHUGGAH wrote:
Bronies Everywhere
Okay lets drop the rule #85. Serious note MESHUGGAH are you sure this is the fastest it can go. Can't you go faster?
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Spikestuff wrote:
Serious note MESHUGGAH are you sure this is the fastest it can go. Can't you go faster?
Short answer: nope. Long answer: I was 5 frames away from the 16 frame improvement. Also note that this TAS doesn't tries to be faster as possible for the reason it's impossible so I instead positioined P1 to be lower on the "field" (bottom) where he can have a much better (and fastest) movement at those situations when I need to scroll the camera (which advances with the left-most player's speed and starts when the left-most player earns a specific distance calculated from the left side of the screen).
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Aren't you trying to say the RIGHT-most player need to be far enough to the right to scroll the screen at the fastest speed?
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.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
feos wrote:
Aren't you trying to say the RIGHT-most player need to be far enough to the right to scroll the screen at the fastest speed?
I'm talking about starting the cam scroll earlier and faster as possible, not about making the cam go at top speed.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
sack_bot
He/Him
Player (112)
Joined: 11/27/2011
Posts: 394
Location: Massachusetts
the fastest possibly go
I want proof. brute force every possible shorter movie and see if any of them complete the game. Then, you can say that.
Message me here for my discord. Current Project: Psycho Waluigi Project on wait list: None?
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
Great job as always, MESHUGGAH. I think you may as well just go over current NES archive and beat half of movies. But I agree it's still not a fact that this movie is actual theoretical limit for this game. The 21-frame rule in SMB1 has made many people assume this run is unbeatable, but then new glitches were found. So this 16-frame rule is not a barrier. For example, as far as I know, Zlomus was elaborating on resets usage (too bad he's disappeared somewhere). Edit: just one note: I think I didn't like the absence of music in the run. At the very least, this "entertainment choice" was very dubious.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
sack_bot wrote:
the fastest possibly go
I want proof. brute force every possible shorter movie and see if any of them complete the game. Then, you can say that.
Okay, I will send the result if it's complete. You need to wait some hundred years.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
feos wrote:
Warp: though now you don't raise that question, here I have something that proves the validity of such an ending. The game executes the very ending code, it is only a matter of WHEN and HOW it is being jumped to. The game's pointer gets broken and runs through RAM, then through open bus, and then reaches some numbers in the beginning of the ROM. These numbers contain the ending routine somewhere inside them. Game Over routine is somewhat related to it, so in the previous movie it also worked out. And after that code is executed, the game proceeds exactly as it does when the ending is reached the normal way.
The way I see it, there are two different aspects of "completing a game": From a purely technical point of view ("does it reach routine X, after which it proceeds to routine Y?") and from the viewer's point of view. Imagine a hypothetical situation where a game could be made to jump to is ending routine during bootup by some bug-triggering button-pressing trickery, the end result being a 0.1-second run that displays nothing else than "the end" and that's it. Sure, it might have been "completed" technically speaking, but from a viewer's perspective there's no feeling of the game having been actually played through and completed adequately. The result would be quite underwhelming. (*) It's one thing to eg. zip through walls and through most of the level at unintended speeds. At least the levels are being traversed through. A slightly different thing is skipping entire levels. And an even more different thing is skipping the entire game. (*) Before anybody brings it up, King's bounty is being completed in the intended manner: By finding the macguffin, as dictated by the game mechanics. Not really the same thing as bugging the game into jumping into the ending code.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I have no idea why you keep bringing that question up in each submission glitched like that. Gameplay completion and glitched technical completion are 2 different branches, 2 different achievements. It doesn't matter how the latter one "looks". It just is how community receives it.
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.
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
Warp wrote:
The way I see it, there are two different aspects of "completing a game": From a purely technical point of view ("does it reach routine X, after which it proceeds to routine Y?") and from the viewer's point of view.
Isn't it essentially an "objective point" vs. "subjective point of view"? Subjective definitions of game completion will never bring any consensus.
MESHUGGAH
Other
Skilled player (1918)
Joined: 11/14/2009
Posts: 1353
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Warp wrote:
The way I see it, there are two different aspects of "completing a game": From a purely technical point of view ("does it reach routine X, after which it proceeds to routine Y?") and from the viewer's point of view.
technical point of view = the way the game is developed (what we abuse here @ TASVideos) viewer's point of view = the way it's meant to be played (what we perfect to make it look like a god plays the game) Feel free to ask me regarding this topic on the appropriate thread or PM.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
AnS
Emulator Coder, Experienced player (728)
Joined: 2/23/2006
Posts: 682
MESHUGGAH wrote:
technical point of view = the way the game is developed
= single way
MESHUGGAH wrote:
viewer's point of view = the way it's meant to be played
= multiple ways
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
Even from a technical perspective there is ambiguity as to when the game is considered beaten or not, because 'the game is beaten' is a psychological phenomenon. (Consider the debate over the recent pokemon yellow glitched run, which loaded the credits in a glitchy, unintended way)
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
feos wrote:
I have no idea why you keep bringing that question up in each submission glitched like that.
I'm interested in an open question, and I like to talk about it. Is there something wrong in having enthusiasm about something?