EDIT: The rerecord count should be 40365 according to the lsnes message window when the movie is loaded, but shows up as just 1 for some reason.

Details

  • Emulator used: lsnes rr2-β17
  • Aims for fastest time
  • Manipulates luck
  • Takes damage to save time
  • Abuses programming errors
  • Finishes with suspiciously high item collection percentage
  • Saves the animals?

cpadolf's comments

Recently a set of discoveries in the Super Metroid speedrunning community involving the fabled Space/Time beam led some runners to beat the current any% TAS, obviously something had to be done about that. This new TAS beats the current any% TAS by 23446 frames, or about 6.5 minutes (thereby turning it into a low% run instead of an any% run), and finishes with an ingame time of about 06:15 (although it's displayed as 00:05, more on that later). This substantial improvement comes from using an entirely new route and a new way of finishing the game involving arbitrary code execution, a phenomenon that seems to become more and more common in the TAS communtiy. As an aside, with the timing used for runs in the real time speedrunning community this run is about 12:30.
The point of the route is to get to Gold Torizo as fast as possible and use the so called "GT Code" which instantly gives Samus most of her upgrades and a lot of ammo, enabling the glitching that takes place afterwards. There are basically two routes for doing this, both of which were fully run through and optimized. The first one is to go to Kraid in order to receive the Varia Suit that will take you through norfair and LN without having to collect a bunch of energy tanks. This is the one that was used by Saturn in his GT code run, and is used by the real time speedrunners (minus the hi-jump boots which can be skipped with some tricky kago balling and walljumping during the lava dive before LN). The second one is to skip out on Kraid and instead use the somewhat unknown and never before (to my knowledge) constructively used pause glitch that keeps Samus from dying as long as the game is constantly being paused. The second option turned out to be faster by about 30 seconds despite the game only being able to run for about 1 second per 2 seconds of paused time.
In order to make it all the way to GT with the pause abuse a reserve tank had to be collected as Samus has to have at least 1 energy when riding on an elevator to keep from dying, and to refill on energy before using the PB in the Gold Pirate room in LN as the game can't be paused after a PB has been placed. Because of the time saved by avoiding an extra pause a lot of extra drops were farmed and damage avoided throughout the run in order to minimize the amount of pauses. An interesting side effect of the pause glitch is that the game clock stops running while Samus health is 0, which makes the ingame clock about 20 seconds lower than it should be by the point that GT is reached, therefore displaying a 00:05 at the end instead of 00:06.
With that I'll leave it over to amaurea and total to get into the more technical stuff of the glitching in the run.

amaureas comments

Some of the first TASes of Super Metroid made use of a glitched beam combination called the "Murder beam", which was activated by shooting a charged shot to the left with all the beams equipped, even the incompatible Plasma and Spazer beams. That combination results in a sort of area-of-effect damage that keeps damaging nearby enemies forever, and was used in the Mother Brain fight until it was discovered that it was faster to just shoot optimally charged normal beams.
Since then, no glitched beams have been used in TASes here, though two other non-crashing beam combinations were known: The zero range, zero-damage, rapid-fire "chainsaw beam", and the seriously glitched space-time beam (uncharged plasma, spazer and ice), which could bring the bosses back to life, retile the rooms, reset items, or trigger the escape sequence. But despite the known potential of the space-time beam it was not used here, possibly due to it being emulated differently by the previous generation of snes emulators. Its most powerful effects may have been thought to be emulation errors.
This TAS uses not only the space-time beam, but also another beam previously thought to be useless: The charged space-time beam. After performing a trace log while firing the various glitched beam combinations, I found that out of the 8 possible glitched beams, the three known beams (murder, chainsaw and space-time) jumped to ROM data, while the remaining 5 all jump to RAM. That is why the former beams were reliable enough to use, and why the latter beams would always lead to a crash: RAM contents are variable, but rarely contain sequences of bytes that when interpreted as machine code do anything safe. In particular, more than half of all RAM values are 0, which when interpreted as an instruction means BRK, aka "hang forever".
But on the other side, while ROM is unchangable, the player can to some extent control the content of RAM. Many of the glitched beams jump to interesting RAM locations, but the one used in this TAS (but not the only potentially useful one) is the charged space-time beam, which jumps to ram location 0x900a0a, where we can find Samus' super missile count, followed by her power bomb count and selected item etc. These are all under the player's control, and have a large enough range that it is possible to perform some interesting operations.
For example, a super missile count of 32 corresponds to the instruction JSR (jump to subroutine), which lets us jump to a location of our choice based on the power bomb count. The most promising targets are the gamepad auto-read registers at location 0x4218 to 0x421f, which contain the current button presses of four gamepads, effectively giving us 8 consecutive bytes which we can freely choose, and which we can update every frame. Reaching these registers would be enough to let us execute arbitrary code, and take total control over the game.
However, both the super missile and power bomb counts are 2-byte variables, and what forms the address to jump to is the second byte of the super missile count and the first byte of the power bomb count. Jumping to 0x4218 using JSR would require 0x18 in the second byte of super missiles, and 0x42 in the first byte of power bombs, for a total of 6176 super missiles and 66 power bombs. Which would take a while to get. So we can't jump there directly. With reasonable ammunition counts, we can hope to jump to addresses 0x0000, 0x0100, 0x0200, 0x0300, ..., 0x3200. That's a lot to choose from, but most of them are hard to influence and contain large stretches of repetetive bytes, such as tile maps etc. But at least two of these are suitable: 0x0400 (OAM data), and 0x0b00 (position and scroll-related variables). The former is what I used in this demonstration video, but it is quite fickle, and requires the right enemies at the right position in the room. The second one I had given up on after almost making it work, because I thought Samus' relative screen position could never get much larger than 256, which would not get me the bytes I needed:
     b00 height       stand=(15,ORA,A),jump=(13,ORA,A),aimdown (0a,bad),crouch=(10,BPL,nop)
     b01 00
     b02 coltype      L=BRK, R=ORA, U=COP, D=ORA, so R or D are OK,  though both modify A.
     b03 00
     b04 x_screenrel low  practially any value
     b05 x_screenrel high nonzero only if Samus is off-screen
     b06 y_screenrel low  typically between 2c and c0
     b07 y_screenrel high
The first 4 bytes here are not useable, but can be made equivalent to harmless operations that bring us to 0x0b04. There we have 4 bytes in a row related to the Samus' screen-relative x and y position. If these could take any value, then we could use this to perform a jump to 0x4218. But when I first investigated this, I thought both these scroll values would be between 0 and 255 (i.e. Samus inside the screen) or at least not values much higher than that. That would make 0x0b05 and 0x0b06 zero, as indicated in the excerpt from my notes above, and would limit us to the same kind of restricted jump that brought us here in the first place.
But total pointed out that I had forgotten out-of-bounds travel (OOB), where it is possible to get almost arbitrarily far outside the screen. That made this method an easy and reliable (to a TASer anyway) method: Position Samus such that her screen-relative position is (x,y) = (0x1182,0x??37), where the ??-part is irrelevant. This corresponds to the machine code
     $90/0B04 82 11 37    BRL $3711
Which finally brings us to the gamepad auto-read registers! At that point we have total control over the game: We could for example set up a jump from the last register to the first one, trapping the game inside this 8-byte register range (this is what I did in my OAM example). But total found a more efficient setup, as he will explain.
See the Super Metroid game resources page for a more detailed analysis of the glitched beams.
Potential improvements: While we investigated the other glitched beams, we were not exhaustive, and they may be usable for gaining control earlier. This includes the standard murder beam, if fired in another direction than left. It might also be possible to gain control without the use of glitched beams at all, by triggering a glitched door transition while out of bounds (for example using the X-ray gltich). I've discussed this with PJBoy, but we didn't find a concrete way of realizing this. To execute larger amounts of arbitrary code, it will be useful to use the manual gamepad registers instead, as the current method only lets us execute about 2-3 instructions per frame.

total's comments

Now that we've finally managed to direct the game to execute code from controller registers using the methods explained by amaurea we need to make sure that we can stay in control for long enough to change the game state and do any other modifications that might be needed to keep the game from crashing. This can be done as explained earlier by crafting a loop that keeps code execution within the controller registers but in this case there's a slightly more efficient method using the games own programming against it.
So what we can do now is to overwrite the function pointer in memory for the charged space-time beam (the one that right now points to 0x0a0a where our first entry point is) with 0x4218. This has the effect that for the following frames as long as the space-time beam projectile still exists, when the game runs code to update it, it will no longer be using the chain of super missile and power bomb count and positional requirements but instead helpfully enter the controller registers as a subroutine. This gives us plenty of controllable bytes each frame since we only need one byte to return control back to the game.
Below is the final five frames of meaningful input using four controllers and some quick notes on what they do (the 0-3 buttons are extra bits that can be set, but does not represent a button on the controller):
   ...Su...A.L.0..3|....ud...XL.0...|B...ud.r.X....2.|.Ys......XLR0.2. 
   LDA #$4218
   STA $0C68
   PLY
   RTS
As explained above, this is our first chance to run our own code and we'll use it right away to overwrite the function pointer so the game will keep calling into the controller registers no matter our ammo or position. Before returning back to the game we'll also have to clean up the stack so we return back to the right place.
   ..s..dl.A.L.0..3|....u..rA..R0...|B...ud.r........|.........XL..... 
   LDA #$26
   STA $0998
   RTS
This sets 0x0998 in RAM to 0x26 which changes the gamestate and tells the game that we've just finished it, and it will now start a fadeout into the ending.
   B.......A.L.0..3|BY.Su.....L....3|B...udlr........|.Ys......XLR012.
   LDA #$80
   STA $7ED821
   RTS
Since we still have a few frames to work with while the game is fading out, there's some small details we can do while we're waiting for the ending to start. So why not be nice and make sure our animal friends make it out safely.
   BY..udlrA.L.0..3|....u..rAX..0...|B...ud.r...R..2.|.........XL..... 
   LDA #$12CF
   STA $09C8
   RTS
And this increases our missile count to get a nice item completion percent.
   .Y......A..R01..|................|.Ys.........01..|................ 
   STZ $0C40
   RTS
Before returning full control to the game, we delete the charged space-time beam projectile to make sure the game does not try to call into the controller registers again.
It should be noted that instead of overwriting the function for the beam handling code, there are a few other pointers that can be overwritten to keep in control of the game that will persist through door transitions and does not need an active fired beam projectile. It is not used in this case since it would require quite a bit more code to setup and was not needed in this case where we just need to end the game.
As mentioned before this run also uses the uncharged space-time beam a few times. First to exit Golden Torizo's room without fighting him and also resetting the super missile in the room, and finally to create a door transition block that will place us out-of-bounds in the next room which is needed to be able to manipulate the screen-relative position enough to be able to execute code.
The way this works is that when you fire the uncharged space-time beam, the game jumps into the middle of a routine in ROM that does a memory copy into RAM. But since we're entering that routine from the wrong place and with non-intended values in the X and Y registers, this routine will copy a whole lot more data than it is supposed to. It will end up overwriting data for events, items collected, bosses defeated and so on which is what makes it possible to collect the same super missile pack three times. An even more destructive thing happens as well though, it will also overwrite room data with "garbage" blocks where some of these will be valid door transition blocks. We abuse this by using these to first escape GT's room and fight, and last to quickly get out-of-bounds in the room left of GT's room where we can finally get into position to fire the charged space-time beam and ending the game.

Thanks to

Big thanks to all of the Super Metroid speedrunning community for their recent efforts in glitching the game, as well as all the people actively contributing to the TASvideos forum thread. Special thanks to hero of the day for suggesting the use of the pause glitch to skip going to kraid.

Noxxa: Judging.
Noxxa: This is a quite unique run. It uses a debug code to aid in reaching its end goal faster, which is arbitrary code execution. We have had varying precedents on runs using cheat codes that were accepted, and that were rejected. These cases all differ in multiple fields, including whether the debug code or cheat code is conventionally accessible in gameplay, whether they are intentionally put in the game for the player to use, and how much of an impact they have on gameplay. But in the end, this just turns out to be an entirely unique case. This is because the run does not just clear the game like a normal playthrough - it takes over control of the game code to trigger the ending.
The movie rules contain a rule against cheat codes, so if the rules are to be followed, this run would be rejected. However, we need to look at the spirit of the rule here. Normally, cheat codes are used to make gameplay easier - make it simpler to finish the game. However, in this case, the run is not ordinarily "finishing the game". It does not actually make "gameplay" easier, because what it actually affects here can barely be called "gameplay". In odd instances such as these, where the game is not being conventionally played or finished, we can make an exception to this rule.
So putting aside the use of the debug code, we are met with a nice, entertaining and well-received run which finishes the game fast. Accepting for Moons. This run will not obsolete any previous run - the current any% ("X-Ray glitch") seems to hold enough merit on its own to keep publication, as it is a more "true" run which completes the game without arbitrary code execution or use of debug codes.
Ilari: Processing.


Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
SmashManiac wrote:
Also, I have a question: are the last 2 input frames necessary? Because if they aren't, I think it would be smart to delete them, because they artificially inflate the frame count. (Not that I don't care about saving the animals or 999% completion, but if it's slower it's not worth it in my opinion - even if it's just for 2 frames.)
The TASer can decide if they think 'real time elapsed in run' or 'frame count of input' or 'in game time' is the more important metric for speed.
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
Skilled player (1444)
Joined: 7/15/2007
Posts: 1468
Location: Sweden
mklip2001 wrote:
I'm giving this a Yes vote. I don't have any suggestions, though, about what happens to the current any% run if this is published. I recommend keeping that run and this run published as separate categories, but I could see the case for obsoletion as well.
Well keeping it as a "no arbitrary code execution any%" would seem a bit silly since it's still plenty glitched enough, and also it could still be beaten by ~4-5 minutes without any arbitrary code execution with the help of Space/Time beam. But I think its category could be changed to low% and be kept as that, because it does collect the fewest items possible to complete the game.
Agare Bagare Kopparslagare
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Cpadolf wrote:
Well keeping it as a "no arbitrary code execution any%" would seem a bit silly since it's still plenty glitched enough, and also it could still be beaten by ~4-5 minutes without any arbitrary code execution with the help of Space/Time beam. But I think its category could be changed to low% and be kept as that, because it does collect the fewest items possible to complete the game.
Uh....low%? I'm unfamiliar with this game, so does that mean 0%, or just arbitrary lower than any%?
Skilled player (1444)
Joined: 7/15/2007
Posts: 1468
Location: Sweden
The current any% run (x-ray glitch run) completes the game with 6 items for a 6% item collecton percentage at the end. As far as anyone knows that is the fewest items you can finish the game with, thereby making it a low% run.
Agare Bagare Kopparslagare
Skilled player (1652)
Joined: 11/15/2004
Posts: 2202
Location: Killjoy
I don't see how this run could possibly replace the current any% run. It uses the GT code. We don't allow the 30 lives code in Contra, or the level select in TMNT2, I don't see why this code would be given special treatment.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
An argument could be made that the GT code was left in the game by accident, making it a programming error, i.e. a glitch. It certainly makes most sense as a helper function for debugging the GT fight than something put there to help the player, unlike the codes DarkKobold mentioned. I thought the main reason why Saturn's TAS was rejected was because people thought it was too similar to other categories. Though I agree that doing this without the GT code would be more satisfying.
Joined: 3/8/2014
Posts: 36
One thing that I'd like to mention is accessing the Gold Torizo's room backwards is not possible under normal gameplay circumstances. The way that the TAS and the realtime players use is the utilization of the green gate glitch, a trick that allow you to trigger left-facing gates from the wrong side. It is only when the player does this glitch that the GT Code itself actually becomes useful, as it's an actual detriment to use during casual normal play. The seemlessness of the glitch probably leads many to overlook it, but it does break normal play and allows for the player to go somewhere unintended. I would also like to make a rhetorical posit that the difference between the utilization of errors in programming that the developers intended for no one to see and the utilization of testing codes that the developers didn't want anyone to see aren't all that different. Also the current any% TAS has something like 8 minutes of unwatchable xrayclimbing, I personally feel that it does the game a disservice by being the movie that people new to both TASvideos and new to Super Metroid in general see has such a large block of nothing happening. Just purely on an entertainment level, this new TAS has no dull sections. Even the pause abuse as silly as it looks, is very intense for the audience to see and leads to suspense at what's coming after the next pause. XRay TAS has samus wrapping across the screen in an empty room over and over. Thanks for reading my opinions :)
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Super metroid already has seven branches on the site, which is more than any other game on the site. I find it rather dubious to make an eighth branch.
SmashManiac wrote:
Also, I have a question: are the last 2 input frames necessary? Because if they aren't, I think it would be smart to delete them, because they artificially inflate the frame count. (Not that I don't care about saving the animals or 999% completion, but if it's slower it's not worth it in my opinion - even if it's just for 2 frames.)
That would be a speed/entertainment tradeoff :)
AzumaK
He/Him
Joined: 5/5/2011
Posts: 42
To Garrison, first off, thanks for being part of that fantastic AGDQ 2014 race. I somehow had never heard of the events until this year, and watched your 2013 run later on. Loved that as well! As for your post, I wholeheartedly agree with everything you said. It's not like the GT code was published in Nintendo Power a few months after SM was released. It was discovered by hardcore fans 17 years later after its release. I loved Saturn's GT Code run, even though at the time, I did agree that it shouldn't have been published (although I think it should be resurrected to the vault or gruefood at least) because it didn't really show off anything new from existing runs. The whole point of this TAS is to execute code ASAP, but it shouldn't obsolete anything. I'd even go as far as to say that Super Metroid deserves its own full page chronicling the TAS runs history. It has enough categories to do so. Also, I must say that the heavy X-ray glitch run is dreadfully boring and the only SM run I don't enjoy watching repeatedly. It definitely belongs here, but I personally dislike it. It's much more bearable in short bursts, for example, hoandjzj's Super Metroid Zero Mission 100% TAS. A few seconds, and it's over, heh.
Currently obsessed with: Mega Man 2 hacks, SFA3, Super Metroid Zero Mission, MM8BDM (Skulltag MegaMan mod, it's amazing!)
Tub
Joined: 6/25/2005
Posts: 1377
An interesting side effect of the pause glitch is that the game clock stops running while Samus health is 0, which makes the ingame clock about 20 seconds lower than it should be by the point that GT is reached, therefore displaying a 00:05 at the end instead of 00:06
If the ingame time is wrong anyway, I would've just set it to 00:00 (or any other obviously bogus value) to prevent confusion. But that minor nitpick doesn't stop me from voting yes. About the GT code: When we reach the point of arbitrary code execution, all gloves are off, and I don't think it's important to keep restrictions such as "play on hardest difficulty", "don't use cheat codes" and similar. Those rules were made to keep the gameplay interesting, but this run isn't really about the gameplay, is it? That being said, I think it is exactly the GT code that makes the remaining gameplay interesting in this run. Making a beeline for the most dangerous territory in the game, ignoring any roadblocks the developers placed on the way, with a complete disregard for her own life - and even her own death. Saturn's GT code run suffered, because the second half was very similar to existing runs. A GT-less ACE run would suffer, because the first half would be very similar to existing runs. Combining both makes for an awesome and unique run.
m00
Joined: 5/14/2007
Posts: 525
Location: Pisces-Cetus filament
Radiant wrote:
Super metroid already has seven branches on the site, which is more than any other game on the site. I find it rather dubious to make an eighth branch.
What I find rather dubious is keeping a pre-tier mentality in a tiered TASVideos. :P
Tub wrote:
An interesting side effect of the pause glitch is that the game clock stops running while Samus health is 0, which makes the ingame clock about 20 seconds lower than it should be by the point that GT is reached, therefore displaying a 00:05 at the end instead of 00:06
If the ingame time is wrong anyway, I would've just set it to 00:00 (or any other obviously bogus value) to prevent confusion.
I disagree. Anyone confused and wise enough would look for an explanation in the submission comments and would find it there. In fact, I think that, ironically, setting it to 00:00 would have made it more confusing.
Tub wrote:
About the GT code: When we reach the point of arbitrary code execution, all gloves are off, and I don't think it's important to keep restrictions such as "play on hardest difficulty", "don't use cheat codes" and similar.
Are you speaking in general? Edit: Removed content because I changed my mind and now disagree with Cpadolf's suggestion that this movie should replace his any% run. Edit 2: Improved wording.
AzumaK wrote: I swear my 1 year old daughter's favorite TASVideo is your R4MI run :3 xxNKxx wrote: ok thanks handsome feos :D Help improving TASVideos!
Skilled player (1444)
Joined: 7/15/2007
Posts: 1468
Location: Sweden
Radiant wrote:
Super metroid already has seven branches on the site, which is more than any other game on the site. I find it rather dubious to make an eighth branch.
I can agree with that but I think if the number of movies are to be considered runs like the two 14% ones should probably be the first ones out. Even though I like them both a lot.
Agare Bagare Kopparslagare
Tub
Joined: 6/25/2005
Posts: 1377
Zeupar wrote:
Tub wrote:
About the GT code: When we reach the point of arbitrary code execution, all gloves are off, and I don't think it's important to keep restrictions such as "play on hardest difficulty", "don't use cheat codes" and similar.
Are you speaking in general?
Mostly. I don't think it makes sense to allow 20 different, absolutely gamebreaking things, but avoid another gamebreaking thing just because it may under some definitions be considered a "cheat code", which there are non-strict rules against. Heck, the rule against cheat codes mentions the konami code, because 30 lives make the game too easy. How is a glitch that turns Samus invincible not worse than that? The intention of the ban against cheatcodes is to prevent trivial runs that could be repeated unassisted, and to avoid the notion that TASes are "cheating". Both reasons are valid in unglitched playthroughs, but don't make much sense in glitched runs. I've stated before that IMHO the only strict rule should be that the run can (theoretically) be reproduced on a real console with an unmodified game. All the other rules are just incarnations of the mantra: "Make awesome runs!". If a run that's clearly awesome contradicts one of the rules, screw the rule. If a run abides by any and all rules, but is boring, screw vault the run. Of course it's always the grey areas in between that we tend to disagree on. Runs that are kinda, but not totally awesome? Queue 30 pages of discussion. Still, I don't think anyone's answer to the question "Did you find this movie entertaining?" should be influenced by the rules, nor should a judge value the rules higher than the viewer response.
m00
Editor
Joined: 11/3/2013
Posts: 506
After some careful thinking, I think the comparison mentioned by Patashu with the old Earthbound run is applicable. The Earthbound TAS used a cheat code that was left in the game but meant to be inaccessable, and used it to glitch to the end. This Super Metroid TAS uses a cheat code that was meant to be accessible, but accesses it in a way similar to the Earthbound TAS.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I don't agree that we have too many categories for Super Metroid, or any other game. If a TAS is good, then the number of existing TASes shouldn't matter - it should be judged on its own merits. And if a category is fun, the number of categories shouldn't matter - it should also be judged on its own merits. If you reject a category based on the number of other categories, or remove another category to make room for it, then you are just introducing unnecessary dilemmas. You can have the cate and eat it too in this situation. In my personal opinion, there are far too few categories for all games on this site. The entertaining Super Mario 64 "random task" tases all have well-defined, if arbitrary goals, and the competition they spark leads to a lively TASing environment that sadly does not have much overlap with this site. They therefore exist primarily as youtube videos, with the associated lack of record keeping and input file preservation. The Vault was supposed to solve the "problem" of too many categories by hiding TASes that aren't deemed entertaining enough. I think the Vault was a good idea, except for the decision to only allow any% and 100% TASes. It should instead allow any category with a clear obsoletion criterion. That way one could have all sorts of oddball categories, but only those moon-worty would be displayed prominently on the site. Then the discussion in this thread would simply be reduced to whether this TAS is entertaining or not, like the question on the top of the page asks.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
amaurea wrote:
The Vault was supposed to solve the "problem" of too many categories by hiding TASes that aren't deemed entertaining enough.
Actually I think the idea with the vault tier was more like "every game deserves a WR completion, completely regardless of entertainment factors". As to not make the tier go completely out of hand, it was decided that the two "WR" categories are "anything goes" and "100% completion".
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I don't think there is any fear of the Vault getting out of hand, because making a TAS is a lot of work, and we obviously wouldn't accept sloppy runs. It's not like we have a population of millions of TASers standing by to flood us with optimized submissions. Or rather, if there were, it's a shape that they're not currently a part of TASVideos. No, regardless of what the initial intention of the Vault was, I think it would be improved by expanding it from "any% or 100%" to "anything with a clear obsoletion criterion". Anyway, sorry for going off on an off-topic rant - how the vault should work is not what this thread was about.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
DarkKobold wrote:
I don't see how this run could possibly replace the current any% run. It uses the GT code. We don't allow the 30 lives code in Contra, or the level select in TMNT2, I don't see why this code would be given special treatment.
From the policies side, I completely agree with this (will mention Earthbound later). Once you accept a run that uses a cheat/debug code/combination to complete the game faster, the borderline completely vanishes. Then, the question would become "which is the cheat/debug code/combination" that we somehow do allow now, and and which kind of them is still not allowed (yet)? And Why do we allow these ones and not those? And it will become an endless flamewar. Seriously thinking over which cheat codes are "good" and which are "bad" is a bad idea. Now about the "precedent". From this thread posts is looks like, in Earthbound no one is actually using codes. The game is being glitched to activate certain features, that appear to be hidden. Like, one corrupts memory and codes his own features into the game, allowing faster completion. What I see in the above case is not using combinations of buttons/moves the developers used to access the hidden features, it's coding your own access to those features through our common technique - heavy memory corruption. Once a player does use some moves/buttons the devs were using for debugging, it's a cheat code and must be banned. And not just because otherwise the games become too easy, or reproducible in real time. It's because otherwise the clarity of our concept dies. So we need to figure out: can that GT code routine be accessed/activated just by memory corruption? If yes, we ignore the cheaty combinations and access to features we can access to, by our common and legit technique. If GT code can only be triggered by using the named intended combinations, then we can't use it. Clarification. All the above only concerns the speedrun. We can not compare speedruns that avoid such codes with ones that use them. But once it's a playaround/arbitrary code glitchfest, it's all yours! Any feature that would make the result more entertaining is allowed, be it 30 lives in contra or 10 lives in Bt&DD.
Garrison wrote:
Just purely on an entertainment level, this new TAS has no dull sections. Even the pause abuse as silly as it looks, is very intense for the audience to see and leads to suspense at what's coming after the next pause. XRay TAS has samus wrapping across the screen in an empty room over and over.
I agree completely. This new run is even more intense to me (non-metroid fan) than the RBO one. It's just nonstop action and density! But still, we can't compare cheaty speedruns to pure ones. So I would reject this submission, but use all available means to encourage the authors to turn it into a glitchfest. Just go up to the point where the game end is triggered, show part of the ending, and then rickroll. Would be TAS of the year definitely. As for the "too many branches" issue, it's easy. The audience just sits together and decides which branches represent enough unique content over the rest. If some of them suddenly is felt as similar to another, they can obsolete one another. Because I personally can't believe that SM does indeed provide variety for endless amount of branches. As not a fan, I can watch nearly none of them to the end. So not only SM fans should participate, but all the people.
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.
Experienced player (870)
Joined: 11/26/2007
Posts: 400
Location: Sueeden
I didn't really follow the progress of the run that closely, but was the GT code simply used to get the space/time beam faster or was it actually necessary?
Joined: 4/13/2009
Posts: 431
As far as I understand, the Golden Torian code is used simply to get the required power bombs and super missiles and beams quicker than normal. Otherwise the run would simply be longer.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Yes. In particular in order to get the plasma beam quickly. The GT code actually gives us too many power bombs, which is why we have to waste so many of them. The border between a cheat code and a debug code is fuzzy. Conceptually, the former is meant to be used by players as a crutch, while the latter is not meant to be available to the players, only to developers. While I would prefer if the GT code wasn't necessary, I don't think it is a bigger problem than the use of non-standard 16 button controllers.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11478
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Can you guys describe what debug tools you were using, and how in general?
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: 7/2/2007
Posts: 3960
Tub put things very well in his/her post earlier:
Tub wrote:
That being said, I think it is exactly the GT code that makes the remaining gameplay interesting in this run. Making a beeline for the most dangerous territory in the game, ignoring any roadblocks the developers placed on the way, with a complete disregard for her own life - and even her own death. Saturn's GT code run suffered, because the second half was very similar to existing runs. A GT-less ACE run would suffer, because the first half would be very similar to existing runs. Combining both makes for an awesome and unique run.
To trigger the glitch, you need to have both Spazer and Plasma beams. You also need to have a large number of super missiles and a certain (lesser) number of power bombs. These are all easily obtainable without using the GT Code; the problem is that then you have a run that doesn't dive into the hardest section of the game with nowhere near enough equipment and yet somehow survives anyway. In fact, you wouldn't even see Lower Norfair (where the GT Code is performed) at all! Instead the game would be played normally up through Draygon (the giant shrimp boss in the underwater area), the Plasma beam would be acquired, and then the glitch would be performed. Well, maybe you can X-ray climb to get the Plasma beam early, but then you're probably talking about doing a Gravity Suit-less underwater section to get there without killing Draygon, which is going to be awfully slow (Samus' movement speed is drastically limited when underwater without the Gravity Suit). And you'd also have a lengthy segment of doing the X-Ray Climb glitch as currently demonstrated in the published any% run. It's interesting from a high-level view but tedious to actually watch.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I did my investigation using snes9x, but a recent version of lsnes would have worked just as well. I started by making short movie files of me firing the various glitched beams. I then played them back, and started trace logging just before releasing the beam. You can see some example of such traces here. I then go through those, and search for some reference point - for example and address from the RAM map that I know will be involved, or in this case, part of the workings of the space-time beam had already been posted by others in the super metroid thread, so I knew which part of the code that glitched beam jumped to. I then worked my way backwards, looking for which variables make the game jump there, how they get their values, and so on, until I understand the logic the game uses to determine where to jump. This is also where it helps to shoot the different beams, as the non-glitched parts will be similar, while the glitched parts will be very different. You can see some comments I made for myself during my work in some of those trace logs. Normally, one would try to figure out how to make the game jump to RAM once one understand how the glitched stuff works, but in this case the game jumped to RAM by itself with no extra work needed for 5 of the beams, so that saved a lot of work and made things much more feasible. So I just looked at where in RAM those 5 cases jumped, and consulted the RAM map to see how manipulatable the variables at those locations were.
Skilled player (1444)
Joined: 7/15/2007
Posts: 1468
Location: Sweden
Derakon wrote:
To trigger the glitch, you need to have both Spazer and Plasma beams. You also need to have a large number of super missiles and a certain (lesser) number of power bombs. These are all easily obtainable without using the GT Code; the problem is that then you have a run that doesn't dive into the hardest section of the game with nowhere near enough equipment and yet somehow survives anyway. In fact, you wouldn't even see Lower Norfair (where the GT Code is performed) at all! Instead the game would be played normally up through Draygon (the giant shrimp boss in the underwater area), the Plasma beam would be acquired, and then the glitch would be performed. Well, maybe you can X-ray climb to get the Plasma beam early, but then you're probably talking about doing a Gravity Suit-less underwater section to get there without killing Draygon, which is going to be awfully slow (Samus' movement speed is drastically limited when underwater without the Gravity Suit). And you'd also have a lengthy segment of doing the X-Ray Climb glitch as currently demonstrated in the published any% run. It's interesting from a high-level view but tedious to actually watch.
I think the fastest non GT-code route would be something like this run up to the point of PB's (but getting Charge beam and skipping the R-tank), and then go X-ray -> Spazer -> Ice -> bunch of x-raying to get to Plasma beam -> bunch of Space/Time abuse to quickly reach the room to the right of Samus ship and trigger the escape sequence. I imagine it would be a couple of minutes faster than the current X-ray run (the 4-5 minutes I mentioned earlier in the thread was a mistake). I doubt that triggering the ending directly could be made faster than that without the GT code unless another method was found to do it without all the extra ammo.
Agare Bagare Kopparslagare