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...


Site Admin, Skilled player (1251)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
There is something wrong in asking the question that was already answered many times. It's pretending it was never answered.
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.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Warp wrote:
I'm interested in an open question, and I like to talk about it. Is there something wrong in having enthusiasm about something?
No, but this thread is not a suitable place to discuss that, since your issue is not with this particular game or run, but with a broader issue than that.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
feos wrote:
There is something wrong in asking the question that was already answered many times. It's pretending it was never answered.
So you are saying that I should just accept any random answer that someone gives to the question? It's not like this is a question of mathematics, like "what's 4 times 7?"
Player (230)
Joined: 4/25/2012
Posts: 73
Warp wrote:
It's not like this is a question of mathematics, like "what's 4 times 7?"
Indeed, but that's because it's a question that is, at its core, subjective. It's interesting to discuss, but eventually people will have to come to their own conclusions. There's more than one "right" answer, hence the establishment of different categories. But as interesting as the discussion is, it isn't really the issue at hand for this thread. This submission is already being targeted at the "glitched" category, and as such, for the purpose of this thread we should suspend our disbelief (if any) and accept "displays the end screen" as the meaning of "beats the game." That doesn't mean that will always be the win condition we accept, but even in mathematics we always have to begin by accepting some assumptions. Even a question like "what's 4 times 7" makes some assumptions about what "4" and "7" are, as well as what it means to "multiply."
Joined: 3/9/2009
Posts: 530
Warp wrote:
It's not like this is a question of mathematics, like "what's 4 times 7?"
34. If you're in the right base.
Post subject: Frame War On! (Maybe?)
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
So, do I need to wait for a frame-war on this one too?
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1251)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warp wrote:
feos wrote:
There is something wrong in asking the question that was already answered many times. It's pretending it was never answered.
So you are saying that I should just accept any random answer that someone gives to the question? It's not like this is a question of mathematics, like "what's 4 times 7?"
I can't care less on whether you accept random answers or not, I'm saying you are not going to get an answer different from what you already have. If you think the answers on your questions were "just random", it's not our fault. I insist on moving the WHAT IS GAME ENDING I DON'T EVEN discussion somewhere there. This thread is about the movie and its validity according to the existing rules.
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.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
feos wrote:
If you think the answers on your questions were "just random", it's not our fault.
I didn't mean it like that. I meant it as "I should arbitrarily accept an answer without any thought or objection."
feos wrote:
This thread is about the movie and its validity according to the existing rules.
Which is my point, exactly. My question is relevant precisely in this thread because it questions the validity of this submission. (The rules say that the game must be completed. My question is: Does this really do it?) You are saying that the question is not relevant to this thread. Therefore we disagree.
Site Admin, Skilled player (1251)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
You disagree on what can be considered being completed once again. Technically IT IS completed, the rules are not violated. If you still FEEL it is not, feel free to examine the holes in the rules and report them here. Or quote the rule that is violated by this movie in this thread. It is also fun that initially you said the matter of completion doesn't bother you at all with this game, now you are asking "Does this really do it?" It looks not like an open discussion, but as infinite discussion with no chance to end it. Unless someone's post is mod-edited for pushing Warps opinion. It's dangerous to talk to you!
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
Patashu wrote:
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.
Well, I agree that movie validity should be evaluated case-by-case. However, I don't agree that psychological aspects of the game should have as much weight as Warp seems to suggest. Since it's TASVideos, we're not playing games, we're solving tasks, right? A video game is the source of task, but not the only source (we often create additional challenges like multiple games with one input, pacifist runs/walkathons/no-damage/etc). Thus our goals depends less on the game's traditional goals and more on how interesting will be the task/how entertaining will be the final movie/etc. And it does not matter if e.g. the game developer agrees with TASer that the game was beaten - as long as the target audience agrees, the TAS should be published. Here I'm talking about Moons/Stars tiers, because I'm not very interested in Vault runs - I guess if a movie can't be entertaining, it really has to follow all those boring conventions in order to gain at least some audience. So, the technical confirmation of the game completion often serves as good enough task. No additional confirmations are required, unless you really want to cater to some additional audience. But if I were to choose from the following 2 tasks: 1) beat the game using glitches which will alienate some purists but produce funny video; 2) beat the game while catering for as wide audience as possible, likely producing a shallow letsplay (tool-assisted); - I would certainly choose the first option, simply because I want to have myself some fun in the process of TASing, since the task is more formal and the result is more personal, etc.
feos wrote:
I have no idea why you keep bringing that question up in each submission glitched like that.
Shh, he didn't notice that Kirby submission also uses heavy memory corruption.
Nach wrote:
So, do I need to wait for a frame-war on this one too?
I don't think so.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
AnS wrote:
feos wrote:
I have no idea why you keep bringing that question up in each submission glitched like that.
Shh, he didn't notice that Kirby submission also uses heavy memory corruption.
If this helps anything, he was okay with that one, but only if it was published in its own category (and obsoleted the existing "glitched" run).
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
feos wrote:
It is also fun that initially you said the matter of completion doesn't bother you at all with this game, now you are asking "Does this really do it?"
It doesn't bother me with this particular run, and I said exactly that, and in a manner that I thought was clearly understandable as "no need to start a discussion about it." Then someone started a discussion on the very subject on this very thread. Who was it? Oh right, it was you. And now you expect me to not to respond to your arguments? If you don't want the subject to be discussed in submission threads, then perhaps you shouldn't start discussing them in submission threads.
Site Admin, Skilled player (1251)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
My post was very compact. It described why this particular movie does beat the game technically. All the rest was flame and abstraction.
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.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15565
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. ---- [2403] NES Battletoads "game end glitch" by MESHUGGAH & feos in 00:56.76
Joined: 2/25/2006
Posts: 407
Warp wrote:
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.
You're not alone, each submission like this just makes me shake my head. The website is slowly becoming a hive of technical achievements instead of spectacular/perfect gameplay.
Ryzen 3700X, ASUS Crosshair VIII Hero (WiFi) Motherboard, 32GB 3600MHz RAM, MSI Geforce 1070Ti 8GB, Windows 10 Pro x64 http://tasvideos.org/Nach/FranpaAlert.html
Site Admin, Skilled player (1251)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
franpa: have you seen a non-glitched version?
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.
Joined: 2/25/2006
Posts: 407
Of this game? Not sure. I don't mind TAS's that do use glitches but play through most of the levels (No glitching to skip a level) and stay relatively within the boundaries of the intended path within the levels. TAS's like the fairly recent Super Mario World ones where you swim under the levels or fly through terrain are boring as all fuck and then the most recent ones just glitch the game to show the end (Much like this particular TAS does), hurray?!
Ryzen 3700X, ASUS Crosshair VIII Hero (WiFi) Motherboard, 32GB 3600MHz RAM, MSI Geforce 1070Ti 8GB, Windows 10 Pro x64 http://tasvideos.org/Nach/FranpaAlert.html
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
franpa wrote:
Of this game? Not sure. I don't mind TAS's that do use glitches but play through most of the levels (No glitching to skip a level) and stay relatively within the boundaries of the intended path within the levels. TAS's like the fairly recent Super Mario World ones where you swim under the levels or fly through terrain are boring as all fuck and then the most recent ones just glitch the game to show the end (Much like this particular TAS does), hurray?!
There is a 2p warpless TAS and a 1p warpless TAS: Link to video Link to video They are from 2005 and 2006, though. I bet they could be improved a lot.
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