TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #3620: FractalFusion's SNES Mega Man X "glitched password, walkathon" in 16:56.88

Console: Super NES
Game name: Mega Man X
Game version: USA v1.1
ROM filename: Mega Man X (V1.1) (U).smc
Branch: glitched password, walkathon
Emulator: (unknown)
Movie length: 16:56.88
FrameCount: 61013
Re-record count: 16457
Author's real name: Justin Chan
Author's nickname: FractalFusion
Submitter: FractalFusion
Submitted at: 2012-06-07 04:56:31
Text last edited at: 2012-09-06 01:39:36
Text last edited by: FractalFusion
Download: Download (4742 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
FractalFusion's Mega Man X 10HP-glitched-password no-dash run in 16:57. Emulator used is Snes9x-rr 1.51 v6.


(Link to video)

(Link to video)

Mediafire download: http://www.mediafire.com/download.php?fj5c8o7ipfy2j0p (~48MB)

The Youtube encode used above uses a variant of TASBlend. It works like this:

  ...|33|66|66|33|66|33|33|66|33|66|66|33|66|33|33|66|...
  ...|     |     |     |     |     |     |     |     |...
and you can implement it in AVISynth like this:

  function Blend(clip c, float oa)  {
  Interleave(
  \ Layer(SelectEvery(c, 8, 0), SelectEvery(c, 8, 1), level=int(round(oa * 257))),
  \ Layer(SelectEvery(c, 8, 2), SelectEvery(c, 8, 3), level=int(round((1.0 - oa) * 257))),
  \ Layer(SelectEvery(c, 8, 4), SelectEvery(c, 8, 5), level=int(round((1.0 - oa) * 257))),
  \ Layer(SelectEvery(c, 8, 6), SelectEvery(c, 8, 7), level=int(round(oa * 257))))
  }
  ...
  Blend(c,2.0/3)
(I actually used 0.66 exact for the encode rather than 2.0/3, but does that really matter?)

This variant reduces the effect of 1-on-1-off blinking, but is equipped to deal with period-4-type blinking that is prominent in Mega Man X games, which is why I used it here. See this topic for why TASBlend on this site doesn't work well on period-4-type blinking.

Goals

  • Obtains 10 MaxHP with a glitched password.
  • Does not obtain Leg Part (Dash) and does not use ride armor.
  • Uses speed/entertainment tradeoffs.
  • Aims for fastest time.
  • Abuses programming errors in the game.
  • Manipulates luck.
  • Uses a Lua script.
  • Is able to auto-fire left and right without dashing.
  • Paints the screen black.
  • Turns down the music volume slider.
  • Prevents Bee Bladers from falling into pits.
  • Splits Electric Spark diagonally.
  • Reverses Vile.
  • Gets 9 12 extra lives.
  • Gets 7 of the 12 extra lives in a span of 11 seconds.
  • Is chased by a ride armor.
  • Sends a boomerang into orbit.
  • Colors a dialog palette.
  • Enters a wall.
  • Rides a block of ice.
  • Makes a Maverick boss fail to appear.
  • Bounces on springs.
  • Pokes an eye using half the screen space.
  • Only the first six goals count.

About the run

I discovered the glitched password and its effects from a couple of Youtube videos:

http://www.youtube.com/watch?v=OqJqQtocCxo
http://www.youtube.com/watch?v=frYwVuBYZAw

There are three known effects:

  • Start with no health. The game is stuck and X cannot move. Occurs if you use the password without going into the demo.
  • Start with 10 health. Occurs if you press start just before it goes into demo (1-5 frames before), and enter the password.
  • Start with 32 health, all weapons and subtanks (no capsule parts), and 0 lives. Occurs if you reach the demo at least once, and then enter the password.

I decided to use a fourth effect, which combines the 10-health effect with the all-weapons effect (reach the demo at least once, then press start just before going into another demo). The downside is having to watch the intro twice, but I decided it was worth it.

None of these effects give X any capsule parts. In fact, using this password, it is possible for X to beat the game without the dash part. I decided to make it a walkathon. Interestingly, being restricted to walking speed increases the opportunity to do entertaining stuff.

More info

  • I used this script. It definitely helps with positioning, timing, and item drops.
  • The blackout glitch (after defeating a boss) is caused by pressing Start at the right time, after the boss explosion but just before X tries to walk to the center of the screen. It causes the music to become soft (as if the player is in the subscreen menu) and lasts until the next subscreen menu access.
  • The Armadillo skip glitch occurs by skipping the camera scroll. Using the ice platform to push X into the door, this bypasses the trigger that scrolls the camera up. As a result, Armadillo does not appear and you can advance without any problem. You can get Armadillo to appear by jumping in the boss room.
  • The ice platform glitch allows X to enter a wall from an upper right or left corner. He can only go downward, however, so this restricts its use. Furthermore, usage in some parts doesn't work well because the glitch bypasses the horizontal scroll trigger, and so prevents X from advancing. However, it works nicely in the corridor between Chameleon and Mandrill in Sigma 3.
  • Dropping 7 extra lives in 11 seconds was sheer luck. It just so happens that a set of random values responsible for dropping extra lives was close together, and occurred in a location with many enemies that have normal drop ability. It did not take me 1000000 years to TAS this. I used the script above, as well as a text file containing the indices of the random values which drop extra lives. There are only 341 such random values out of 43534. See below for more information about RNG.
  • I end the movie not at the last dialog clear, but when I press start to force fadeout after warping out at the end.

About the RNG

This RNG is used in Mega Man X-X6, Mega Man 7, and Rockman & Forte.

The RNG uses the following formula to generate the next 16-bit number:

  val <- (val*3)&0xFF00 + (((val*3)>>8)+val)&0x00FF
or in C code:

  a=val*3
  hi=(a/256)%256
  lo=(hi+val)%256
  val=256*hi+lo
The starting value for the RNG, which is taken to be index 0, is 0xD37. With this starting value, there are 43534 numbers in the sequence until the RNG reaches 0x0D37 again.

Index Value (Hex)
0 0D37
1 275E
2 76D4
3 6438
4 2C64
... ...
43530 3F83
43531 BE41
43532 3A7B
43533 AF2A
0 0D37

The Lua script above uses a 128KB binary file (generated in C++) to look up the index corresponding to a given random value.

Information regarding how the game uses the RNG to determine things like random drops can be found at this post.

Closing remarks

Not much else to say. Enjoy the run!
Nach: Judging.

FractalFusion: Changed branch from "glitched" to "glitched password, walkathon". Don't know if you guys agree.


Nach: After reading everyone's comments and mulling over this for a bit, I realize there is no clear cut decision to be rendered for this run.

This run is faster than the existing any% run, and can technically be used to obsolete it. On the other hand, it abuses the password system, and while not actually using a password, the use is questionable. That alone pushes this into the same kind of "glitched" realm we have for games with SRAM, and makes it a separate category. Many viewers disapproved of this run for violating password rules, but I find this case to be acceptable.

The way the glitch works, all 8 stages are considered beaten, and X has their weapons. FractalFusion manipulated things so he'd have the minimal health and upgrades one can get using this glitch, to skip as little as possible. This leads to an interesting scenario where the intro level is played with all items and stands out from other runs, but the final levels would end up looking pretty much the same as an any% run, except that X has less than usual once he gets there.

The next thing about this run that stands out is the walkathon quality. The idea of a walkathon has mostly been shot down throughout the site when attempted for most games. The one exception has been Super Mario Bros, where the game is pretty short, and believed to not be possible as a walkathon, hence the movie there stands out as doing the impossible. Such a feat is really not much of a feat in other games, and in terms of this game, not the least bit surprising, thanks to wall jumping being part of normal game mechanics required to be used. On terms of a full walkathon alone, I think most people would want such a run rejected.

The next thing about this run is the speed vs. entertainment trade off. I don't know for sure if going to get the boots would make it faster, but I imagine so. There's plenty of other places where thanks to the slow speed, plenty of tricks were shown off and lent to entertainment. I don't think those tricks would work across a long non glitched run, and certainly not when doing the initial stages, where X doesn't even have the weapons available yet to show them off. So this run to an extent is a playaround, showing off the weapons, and only across a few stages to keep entertainment high.

Based on the above, neither quality alone would really be publishworthy. A glitched run to skip 8 levels then grab the boots would be too repetitive with the any% run. A full walkathon would be boring and not show much off that this run doesn't, nor have the entertainment the intro level here did. Adding a third branch to a popular game is acceptable, and it seems the combination specific to this run is one of the few that can work.

Feedback for this movie wasn't great, but it seems most of the negative feedback was about prejudging the run's allowance based on entering a failed password, or fighting over whether some other kind of movie would be more acceptable or not.

Since a slim majority of the users prefer to see this published, and many of the negative comments either misunderstood this run's glitch, or preferred an alternate run which would be rejected by my above criteria, I'm going to err on the side of acceptance.


Guga: Processing...

Similar submissions (by title and categories where applicable):