Submission #1459: FractalFusion & Graveworm's SNES Mega Man X2 in 31:42.45

Super Nintendo Entertainment System
baseline
Snes9x 1.43
114147
60
64140
Unknown
Mega Man X2 (U).smc
Submitted by FractalFusion on 2/21/2007 3:50:51 AM
Submission Comments
FractalFusion and Graveworm's Mega Man X2 in 31:42. It is 1410 frames (23.5s) faster than the published run by gameplay improvement, and 488 frames (~8s) faster straight up (due to Japanese/U.S. ROM differences).
This run uses Snes9x improvement9 with Volume Height Envelope Reading.
A while ago (i.e. last February), Graveworm and I[1] had the idea of working together on this run. Although it didn't turn out well (Graveworm lost interest and left partway through this run, and eventually left the site), I was pleased how motivated Graveworm was in seeking perfection in the first few levels, even if I didn't agree with the philosophy. It even had me working for days optimizing one part of the run (the Wheel Gator capsule).
Progress was slow for the most part. During the summer, when we were at Magna Centipede's stage, there was a lack of interest of both parties, during which Graveworm left the project. I continued, but only after 3 months of doing nothing. Eventually, at Crystal Snail, I did nothing for another month while working on Mega Man X. After that, and parrot14gree's Rockman X2 run, I continued. After many periods of working and not working on the run, I finally finished it.
Graveworm's contribution was the intro level and boss, Wire Sponge level without boss, and Flame Stag level without boss.

Aims

(highest to lowest)
  • Uses no passwords
  • Aims for fastest time
  • Items: 100% (except Zero parts)
  • Abuses programming errors in the game
  • Takes damage to save time
  • Manipulates luck

Programming errors abused

  • Intro skip
  • Being in dashing movement while shooting uncharged X-Buster, which does 2 damage instead of 1 to most enemies.
  • Shooting while charged and remaining charged (just before a boss battle).
  • Vertical velocity (but not position) being affected by gravity while being pulled by Strike Chain, then breaking off Strike Chain before it resets velocity.
  • Glitching through the fish's laser in Bubble Crab's stage.
  • Using shōryūken before Zero fight to gain better placement.

Other tricks

  • Jumping off slopes while walking downward, which allows a higher jump.
  • Jumping up ladders without grabbing them.
  • Taking damage for invincibility to spikes (and other stuff).
  • Charging up before X lands from the shōryūken.

Tools used in this run

Other than the usual tools, I used memory viewer (halfway through the run, though). This allowed me to monitor important variables such as miniboss health, X's position, and camera position.

Boss order

Wire Sponge, Wheel Gator, Flame Stag, Bubble Crab, Magna Centipede, Crystal Snail, Overdrive Ostrich, Morph Moth.
  • Wire Sponge is for the Strike Chain, Wheel Gator is for the X-Buster upgrade (allows charging of all weapons).
  • I chose Flame Stag before Bubble Crab because the order allows me to clear the X-Hunters from the stage select screen as fast as possible. That Speed Burner works very well in Bubble Crab's stage is another factor. Crystal Snail before Morph Moth to get a heart tank.
  • Overdrive Ostrich before Morph Moth because of the air-dash upgrade.
  • This order allows me to pick up all items and upgrades without revisiting (needed for shōryūken upgrade).

Luck Manipulation

Throughout the entire X series on SNES, the programmers left in a quirk that allows you to manipulate different actions for the bosses just by dragging X down a wall so that dust sprites appear. This luck-manipulation does not apply to most other actions, even dashing along a floor to make dust sprites. Other ways to luck-manipulate include X's position relative to the boss (sometimes being close or far results in a different attack), timing (entering the gates or lag), and destroying or not destroying enemies.

Weapon Notes

  • X-Buster:
    • Level 1 (uncharged): The basic weapon. Destroys enemies very well since it autofires, allows 3 shots on screen, is easy to switch out, is unlikely to cause lag, and is subject to double-damage by dashing.
    • Level 2 (blue): Not much use. It can destroy some enemies' shields and go through a row of minor enemies.
    • Level 3 (yellow): Not much use after I get X-Buster upgrade.
    • Corkscrew shot from Level 4/5 (pink): Does 4 damage to bosses (3 if blinking). Good weapon. Level 4/5 consists of a dual shot: a level 2/3 shot, and the corkscrew shot. To shoot both shots quickly and cancel X's nice shooting animation, shoot this while hanging on a wall.
  • Strike Chain:
    • Uncharged: This tool is the grappling hook of the game. It is useful just about anywhere, in even the most subtle of places. To understand some tricks that can be done, check Mega Man X tricks..
    • Charged: A larger grappling hook that can pull X faster and from farther away. May cause lag in some places.
  • Spin Wheel:
    • Uncharged: This is a multiple-hit weapon and a powerful one. It allows charging up while the uncharged Spin Wheel is on screen.
    • Charged: Fires 8 shots in all directions. Because it causes so much lag, it is rarely used.
  • Bubble Splash:
    • Uncharged: I don't use uncharged Bubble Splash in this run simply because there are better weapons. This is a continuous-fire weapon, though, so it allows charging up while firing.
    • Charged: When charged, it allows jumping higher underwater, but I decide not to use it. I use it solely for damage (and only once).
  • Speed Burner:
    • Uncharged: Useful weapon for its damage.
    • Charged: Another tool: a flaming air-dash. It's faster than normal dashing, and its speed lasts while X is in air. It is useful in many places. Note that charged Speed Burner, as well as the air-dash upgrade, allows air-dashing close to the ceiling in some cases, which in turn allows grabbing an overhang from underneath.
  • Silk Shot:
    • Uncharged: Destructive weapon. Fires junk that splits into 4 pieces, each one doing a lot of damage (non-bosses only). Hard to switch out, though.
    • Charged: Fires a huge piece of junk that splits into 8 pieces. This causes too much lag to be worth using in most cases.
  • Remote Mine:
    • Uncharged: Can stick to walls, floors, and ceilings. Can be guided up and down. It can be used as a delayed hit weapon, but unfortunately is slower than X. It is also hard to switch out.
    • Charged: Slow-moving well of energy. Because it goes very slow, it can deliver multiple hits to a certain boss.
  • Crystal Hunter:
    • Uncharged: It can turn some minor enemies into crystal platforms. Apart from this and a certain boss, everything else is immune to it.
    • Charged: You won't see this in any run of this game. It causes a slow-down effect. :(
  • Sonic Slicer:
    • Uncharged: Allows for delayed hits. Not too useful as it starts out slow before going fast.
    • Charged: Shoots 5 large blades upward, which fall back down. Can cause multiple hits.
  • Shōryūken (secret weapon):
    • Does 16 damage on first contact (non-blinking) and 8 damage every two frames thereafter (damage when blinking). Exceptions to the first-contact damage are Agile (1), Flame Stag (8) and Neo (Wireframe) Sigma (2). Kills almost all bosses in one hit.
    • To use the shōryūken, the following is required: full health, standing position, X-Buster armed, no charged shots on screen, control of character, and obviously the shōryūken upgrade.

Table of time saved in levels

levelpublishedv3frames savedtime saved
intro387638751~0s
wire sponge4398434355~1s
wheel gator6207+506006251~4s
flame stag4257417384~1.5s
bubble crab46544271383~6.5s
magna centipede6359626891~1.5s
crystal snail6280+34626153~1s
overdrive ostrich5438+75548033~0.5s
morph moth7325+507315601s
x-hunter 13686358997~1.5s
x-hunter 231453013132~2s
x-hunter 33761+54374273~1s
teleport142311420427~0.5s
final6037+244622358~1s
All level frame times start at first possible movement and end when the boss’ meter reaches zero. The intro starts from reset. The last two levels end when X last lands in normal position.
Since the published run was made on the Japanese version, and v3 on the U.S. version, some times are written a+b where a is the frame time on the Japanese version and b is the adjusted frame difference between Japanese and U.S. versions.

Run Info (the part which I forgot last time)

Pre-game

  • Intro skip saved almost 3 seconds. That's old news.

Intro stage (1 frame saved)

  • Graveworm worked on the intro stage. Apparently, frame optimization is the idea here, similar to parrot14gree's run of this stage.

Wire Sponge's stage (55 frames saved)

  • Graveworm worked on Wire Sponge’s stage; FractalFusion on the boss. Weather was manipulated as usual. It is faster to lead off with a charged shot against Wire Sponge. This time, Wire Sponge wasn't exactly left hanging.
  • The apparent dragging of X along the wall near the end of the Wire Sponge stage is luck-manipulation for the Wheel Gator capsule in the next stage.

Wheel Gator's stage (251 frames saved)

  • The best I could do for manipulating the Wheel Gator capsule to open as soon as possible was a 9-frame delay. I put 5 at the beginning of the level and hid 4 in the shaft jump. It took a long time to find. The reason for this manipulation (it's the only capsule that does this) is because it only opens when the screen is centered properly, and it's hard to do when the screen sometimes shakes periodically.
  • You gain control right after X shoots the first shot in the X-Buster upgrade demo. I use this to jump into the shaft, although I cannot have dashing movement.
  • The Strike Chain was heavily (ab)used in this level. FractalFusion's v2 run used Strike Chain a lot, but never enough. Taking damage to save time was also used.
  • Using the Rabbit to lunge off an edge allowed speed gain in the ride armor section.
  • There is a savestate issue where loading a savestate will always reset the waves in Wheel Gator’s room; this leads to frequent desyncs.

Flame Stag's stage (84 frames saved)

  • Graveworm worked on Flame Stag’s stage and FractalFusion worked on the Flame Stag boss and Bubble Crab stage and boss. This is the last of Graveworm's contribution to this run.
  • I delayed hitting Flame Stag on the final hit by 5 frames since the boss explosion doesn’t start until both X and Flame Stag are on the ground.

Bubble Crab's stage (383 frames saved)

  • There is a lot of lag underwater in Bubble Crab’s stage. Pressing right at the wrong time can cost 10 frames.
  • I glitched through the fish’s laser using Speed Burner and found a new route up to the heart tank.
  • I made sure the Spin Wheel hit Bubble Crab every 60 frames. It’s not as easy as one would think. Maybe I shouldn't take damage just to save 1 frame.
  • More time was saved on Bubble Crab’s stage than on any other level, which is a pleasant surprise.

Magna Centipede's stage (103 frames saved)

  • The published run was 12 frames slower than the v2 run.
  • I found a way past the shielded enemies without slowing down by using charged shots to destroy their shield. Sometimes, X must walk a bit before dashing for the shot to work.
  • Here's where memory watching comes into play: against Chop Register (C4 Sword). Using memory watch, I was able to shoot just once, wall-jump, then autofire it to death.
  • The block room causes lag. I can't do much here.
  • I don't use the black X trick, since a charged Speed Burner saves a hit against the miniboss.
  • I let Magna Centipede shoot his tail first as opposed to having him draw X in. Regardless, I can't prevent Magna Centipede from warping or jumping. Note that I want Magna Centipede to shoot his tail or draw X in because it prevents him from warping when shot, and Magna Centipede's third action is always jump unless he already warped. By letting him shoot his tail first, I get good timing, enough to prevent recoil action before he warps when hit.

Crystal Snail's stage (53 frames saved)

  • The 53 frames saved were from not charging up at the beginning (3 useful Strike Chains) and lag.

Overdrive Ostrich's stage (33 frames saved)

  • Not charging up just before the bike saves time, although it doesn't glitch the graphics.
  • I was able to shoot down the raised bridge without slowing down.
  • Before the capsule, Strike Chain is useful, and I don't need a charged Spin Wheel shot to break the blocks quickly.

Morph Moth's stage (60 frames saved)

  • It is possible to use the charged Spin Wheel's diagonal shot to clear a path in the blocks leading to the capsule, but it causes too much lag, considering the location is a junk vent.
  • The junk vents cause so much lag later on. It is hard to manipulate the junk to reduce lag.
  • After Morph Moth morphs, the screen tries to scroll up. It is possible to chase the screen upward by moving upward alongside the screen scrolling, and is one reason to look at the camera position in memory watch.

X-Hunter stage 1 (97 frames saved)

  • This level has many opportunities to use Strike Chain and Crystal Hunter.
  • Neo Violen battle is hard to manipulate, because of lag, charged Bubble Splash, and final position.

X-Hunter stage 2 (132 frames saved)

  • Charged Bubble Splash really isn't a good idea, it turns out.
  • There is a graphical glitch where one of the platforms turns invisible. It's still there.
  • By looking at memory watch, I can destroy Serges' Wall very fast. Each cannon has 32 health, and a piece of Silk Shot does 15. That means after shooting a dash shot at one cannon to lower it to 30 health, I can take out two cannons with one Silk Shot (initial Silk Shot plus four pieces is five Silk Shot hits, three of which hit the cannon with 32 health and the other two which hit the one with 30 health). Repeating this again destroys the other two cannons, with no Silk Shot residue left over, which reduces lag. I only take damage because of X's positioning.
  • As for Serges, I use double hits with the charged Sonic Slicer (same as parrot14gree's run) but I shoot an uncharged shot for a delayed hit, saving time. I take damage to remove an energy ball which would cause problems later.

X-Hunter stage 3 (73 frames saved)

  • I saved time by using Strike Chain more often.
  • I take health here because the shōryūken upgrade only shows up if you have full health (as well as all items and upgrades).
  • Agile is easily defeated. Why does Agile take 1 damage on first contact? I don't know.

Teleportation stage (27 frames saved)

  • The published run was slower than my v2 run by 13 frames, according to DeHackEd. Must be the Overdrive Ostrich battle.
  • I try to maximize use of Strike Chain before entering the capsules.
  • Since shōryūken always does 8 damage to Flame Stag regardless of blinking, and I have time, I shoot Flame Stag beforehand for fun.
  • Speaking of Overdrive Ostrich, it is faster to let him be invincible for about 40 frames instead of trying to go to his right side before he appears (which is a glitch).
  • Wheel Gator requires being hit with the Strike Chain to prevent diving. Since I can only get a maximum of 3 shōryūken hits on a punch on Wheel Gator, the first contact must be non-blinking (16 damage instead of 8); hence, the waiting. There is only a one-frame window to do this: one frame too soon and the first contact is blinking, one frame too late and Wheel Gator dives before the final contact.
  • Morph Moth can never be killed before he morphs. Even if he has 16 health and shōryūken hits him with first contact non-blinking for 16 damage, the boss meter plunges to 0 and then immediately rises to 12.

Final stage (58 frames saved)

  • Ever wonder why Sigma's final stage looks a lot like Magna Centipede's stage? It is! Select Magna Centipede's stage if you don't believe me.
  • Just before the Zero battle, as the door closes, the screen attempts to center slowly, but dashing forward chases the screen. I can't chase it all the way, though, because then if I did a shōryūken, it would place X behind Zero, which is a bad spot. Instead, after chasing the screen a bit, I go back and shōryūken to place X right in front of Zero, which is a good spot. I time the shōryūken so that Sigma starts to arrive before X finishes the shōryūken.
  • Zero can't be one-hit with the shōryūken. At the end of the battle, I can spare X's walking for at least 30 frames, because after X lands, the game shoves Zero to the right, where he stays for at least 30 frames before it shoves him back to the left when X is in position.
  • Luring Sigma's first form to the left side is for positioning X so he doesn't have to walk afterward.
  • Wireframe Sigma has 64 health. Since the shōryūken only does 2 damage when he's not "blinking" (i.e. not hit within the last 30 frames) and 8 damage when he's blinking, I hit him first with the Strike Chain before releasing the shōryūken.

Possible Improvements

  • Use X-Buster upgrade on Flame Stag. parrot14gree's Flame Stag battle is faster.
  • See if doing a different order is faster (maybe Bubble Crab before Flame Stag).
  • Use charged Strike Chain in Magna Centipede's stage where parrot14gree does and I don't.
  • Sacrifice one or two frames to avoid damage. (?)

Timing compared to previous run

levelpublishedv3frames savedtime saved
intro387638751~0s
wire sponge4398434355~1s
wheel gator6207+506006251~4s
flame stag4257417384~1.5s
bubble crab46544271383~6.5s
magna centipede6359626891~1.5s
crystal snail6280+34626153~1s
overdrive ostrich5438+75548033~0.5s
morph moth7325+507315601s
x-hunter 13686358997~1.5s
x-hunter 231453013132~2s
x-hunter 33761+54374273~1s
teleport142311420427~0.5s
final6037+244622358~1s
All level frame times start at first possible movement and end when the boss’ meter reaches zero. The intro starts from reset. The last two levels end when X last lands in normal position.
Since the published run was made on the Japanese version, and v3 on the U.S. version, some times are written a+b where a is the frame time on the Japanese version and b is the adjusted frame difference between Japanese and U.S. versions.
At the end, v3 is 488 frames (~8 seconds) (straight up) faster than the published run and 1398 frames (~23.5 seconds) (calculated by level savings) faster.

Closing notes

It is that hard to pursue frame-perfection for even a few levels and I don't advocate it for runs as hard to optimize as these. What's the point of saving 5 frames over the course of a whole level if someone can find a trick that saves 40 frames in a small part? I like to count my savings in terms of tricks. The more that time saved can be attributed to significant methods, the more meaningful that time saved really is.
I also don't like to go back; somehow, only progress tends to feed motivation, unless the correction happens to be that meaningful as above, not that it's that bad to go back. I just think that we shouldn't put so much value into the perfection of a run, only to find out later that the value was all for nothing. We are here for entertainment.
I hope that Graveworm still enjoys the runs on this site, and that he enjoys where he is, if he has joined another site.
Thanks goes to the following people who helped me:

[1]: All references to "I" in this submission text refer to FractalFusion.

adelikat: Accepting as an improvement to the current run.

DeHackEd: Claiming for encoding.
Last Edited by adelikat on 9/11/2023 2:16 PM
Page History Latest diff List referrers