Submission #6463: Shinryuu, aglasscage & finalfighter's NES Mega Man 2 in 23:44.50

Nintendo Entertainment System
baseline
FCEUX 2.2.3
85611
60.0988138974405
95940
Unknown
Rockman 2 - Dr Wily no Nazo (J).nes
Submitted by Shinryuu on 7/22/2019 10:42:58 AM
Submission Comments

Objectives

  • Emulator used: FCEUX 2.2.3
  • Aims for fastest time
  • Takes damage to save time
  • Loses time to save time
  • Heavy RNG manipulation
  • Wise usage of glitches

Frame table

Length:Frames:
00:23:44:5085611 frames
Savings:Frames:
00:00:04:01241 frames
StageFramesDifference
Flashman88
Heatman2432
Airman2153
Crashman1467
Quickman067
Metalman1077
Bubbleman380
Woodman32112
Wily 1144256
Wily 2120376
Wily 3-232144
Wily 468212
Wily 529241
Wily 60241

Ready to made encode

Video and ghost script are from warmCabin. That's being synced at the beginning of every stage so it makes more sense, pirohiko added every other candy to the video. A good amount of thanks goes for them!

About our project

In previous run I was absent quite a lot and I didn’t contribute much at all. This time around I wanted to handle almost everything by myself as much as possible. Of course I had a superb help from great persons as well. I was able to find my somewhat lost motivation and I started this project years back. I had to face many issues because of these new improvements and they kept coming. Most notably $1C aka. the frame rule was almost everywhere blocking our attempts. Airman took years to accomplish because we wanted to use buster for DelayScroll and use 3xitem1s at the end of the stage. We also lost our motivation at some point because we couldn’t make things to work. This part was also tedious because I had to arrange item1s correctly and find a way to get a good subpixel for the last long screen as well. I was able to beat the frame rule even the savings were quite small on a whole different gameplay.
I also noticed that our gameplay shifted somehow. This happened after I beat Crashman. Woodman's stage didn't work the way it should have been and I was curious to know what I broke along the way. The culprit was shifting I accidentally found. I can use it at least on Crashman and Bubbleman stages to save additional frames up to the 5 frames per. stage. We know that DelayScrolls are only possible when music is at certain position. Lag doesn't affect its position, so what happens if we add more lag before executing a DelayScroll? It's simple, shift happens.

Work sharing

I’ll put this in a simple way; I did almost all of the work, aglasscage helped me with Wily strategies and DelayScroll timings along the way. He provided many possibilities and I inspected them further on. He also had great ideas for other stages as well. He did most of the Woodman stage by itself and found correct timings for a new route. FinalFighter helped me with timings such as frame rules, lag frames and DelayScrolls and told me what is and what is not possible to do. He also gave us useful scripts for debugging. He also assembled and traced my discoveries about frame rules that were related to the objects, such as refills. This game doesn’t have a timer but instead many of the objects are using it.

Stages

Flashman

You can optimize your subpixel positioning a lot because how to mechanics on the floor works. I face left at certain places for a good reason. You won’t lose any time by facing left for a while and you have more freedom to fiddle on subpixels. That is to optimize my positioning when I jump down. It is also important that you don't hit the wall immediately because it resets your subpixel. You press left/right at a correct position instead while you’re in the next screen to gain some subpixels. Boss fight is also fast enough to tackle a frame rule off the map. Thanks goes to warmCabin who found this subpixel and Flashman boss fights out. They motivated me to get this work done.
Gameplay:
  • Shinryuu
    • special thanks goes to warmCabin for finding a faster way to beat Flashman and its frame rule as a result.

Heatman

I got the item3 idea from PS1 version of the run. I used an extra item3 in the first screen to make my Y position higher so I didn’t have to spend unnecessary time in the air. This didn't took too much time to analyze but I noticed that it wasn't well optimized in the PS1 version of the run so it looked slower at first, but in the end I found a way to make it useful. In the block area I found a way to save around 5 pixels by throwing a item3 at a correct position before hopping on a block as well. Boss fight is good and old. I found a way to double K.O. with even more better Y position. I broke the frame rule three times. I had a good luck as well. Door’s tend to have those annoying 4 frame rules and bosses are at 8 frames. At Wily stages you encounter 16 frame rules too.
Gameplay:
  • Shinryuu (main player)

Airman

This is the stage that stopped my work for quite a while but we were able to figure things out. I'm glad how I was able to perform item1 height manipulation as well. I also played the last part of the screen at different subpixel positioning before executing a DelayScroll. I made many different versions where I had a different X subpixel position for the last screen. This was important step because when you jump off those large enemies your subpixels might be aligned badly so you have to make higher jumps and you'll just lose time in the process. Other thing is that a good positioning is needed to kill the first air blower enemy off the map sooner. At the end of the stage, near the gate I intentionally shot item1 out. This is to manipulate Crashman's first item1 correctly together with the gate one. This needed a lot of testing because my options were limited. I also had to play Airman fight again and again when I ran tests on it. One might wonder why I didn’t use the remaining two item1s at all but there’s a simple reason; it can gain me a bit more better subpixel for the first screen, around 0.2xx something but that’s where everything goes wrong. DelayScroll won’t work because your subpixel rolls so you’re actually one pixel behind when you’re supposed to scroll. With different, but still a bit higher subpixels I had a lower subpixel value for the last long screen. It took a while to find a high but reliable X and its subpixel for the last screen. It was important to find a route so I can jump as low as possible over those spikes. If your subpixel doesn’t match, you need to jump higher and you’ll lose your subpixels instead. Also, because I had the remaining two left. I had more options to go back and roll item1 height manipulations if I needed them for testing purposes. I actually had to throw one off at before a zip, that was to manipulate the first item1 so it was correct for the zip to succeed as fast as possible. I had a good luck because it was perfect for Crashman as well.
Gameplay:
  • Shinryuu (main player)
  • aglassage (Various testing, DelayScroll)

Crashman

I saved a frame after I killed myself in the process. After dying I had to redo that room many times because I wanted to have a better position for the future usage. Copy-pasting made this partially simpler option. I also found out that I can lure an enemy even more closer and gain a big refill from it. I broke refill rule and gained around 10 frames from it but that didn’t help me to improve the stage at all. When I do a DelayDownScroll just before the boss room, it needs a special effect address called FF so we have to wait for that. It happens at the correct part of the music so you can’t do anything about it. Lag doesn’t affect it so at the ladder where I did a delay based trick DelayLadderTech, I intentionally collected all of the lag I could to shift frame rule and gain additional frames from that. This is a trick I found and FinalFighter investigated it later on. FinalFighter also investigated the rule for refills I pointed out as well. I also shoot Airman’s weapon at random to manipulate item1 values for Quickman. We also had a different idea in the screen where we took a refill because it was possible to make a lag frame there. Our strategy was not to change our weapon at all but to wait for enemy to shoot at a correct time and use 3xitem1s. This technique didn’t work because our SE value was bad. Next lag oppurtinity would have happened around 300 frames later which is just a big no.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (testing different setups for DelayLadderTech)

Quickman

Polished gameplay and subpixel optimization. I found a way to perform first left zip faster with a neat combination. Too bad you just can't beat this stage faster. I was able to save a lot of frames though but the frame rule and boss' manipulation didn't let me pass. At first I beat the boss faster but the end result was same. I investigated this stage with different revisions but the end result was always the same so I made a version where I had an ability to manipulate Metalman's item1 height as perfect as possible. Also, a lot of good luck was involved.
Gameplay:
  • Shinryuu (main player)

Metalman

I had an extremely nice luck with item1s and I was able to manipulate them quite well at Quickman’s stage beforehand. Stage is blazingly clean and fast now. Doesn’t offer anything that special but it’s slick. Enjoy.
Gameplay:
  • Shinryuu (main player)
    • special thanks goes to warmCabin for getting an extra lag frame off the fight.

Bubbleman

There are some small changes in the gameplay. Also, I did the same like I did with Crashman. I shifted a frame rule like I did with Crashman’s stage. I found a place to use item2 faster at the final screen before the boss room so I had more options to shift frame rule and gain frames from it. I had to figure a correct amount of lag so enemies would drop stuff as well. RNG changes every frame so you can imagine it goes like this 0,1,0,1,0,1,0… etc. I also had to manipulate an address called $FC which stand for a underwater rule. It determines how much time you have to wait at Bubbleman before you can do any input. This is partially random and is tied everything you do so I had to try different combinations with lag and $FC to find it out. Value only locks up when you jump off from the water.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (helped with DelayDownScroll timing)

Woodman

This stage uses a new route which was planned and played by aglasscage. We do 4 different scrolls at this stage. This took a nice amount of time to put together. We also needed a correct manipulation from bats, they didn’t behave quite well because shifting or something else was broken during the gameplay. FinalFighter and pirohiko couldn’t pin-point the issue but FinalFighter confirmed that something is indeed changes. We suspect Crashman because our low NEXT value messed up the graphics for a while. This stage surely took some time to pull off. I'm glad I don't have to touch this anymore.
Gameplay
  • aglasscage (main player, testing and optimization)
  • Shinryuu (boss, testing and optimization)

Dr. Wily 1

We're using item2 at the beginning of the stage to keep item1 usage at minimum. We gain a lot of frames but we're going to lose a lot of them after we beat Wily 3 stage. Because we don't use 2xitem1s in the beginning we're prepared to use them at the next stage to gain some time. We also did this to prevent unnecessary weapon changes along the way. I spam Quickman’s weapon around trying to mimic the music and do some manipulation as a bonus.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (various testing and ideas)

Dr. Wily 2

Stage itself looks pretty much as the same as before. I noticed that I was able to go through a refill rule when I picked my second refill up. It didn’t really affect the outcome but it was a neat little thing. It’s a good idea to pick refills as fast as you make them to spawn because this game uses rules for them as well. At the drill room we didn’t pick an energy refill so we saved one menu entry off the map. Menu changes tend to took around 50-60 frames. Also, I use two item1s to jump over the obstacles instead of using item2 there. This was possible to perform because we saved two item1s from Wily 1 stage.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (various testing and ideas)

Dr. Wily 3

We grab a refill at the beginning of the stage while we drop hard. Now we don’t have to do any extra weapon changing which is a good thing. I jump as high as I can to avoid unnecessary lag that is coming from the water. This stage is overall much more slower but we were still faster in the end, thanks to some different strategies we did at Wily 1 and Wily 2 stages. I had to deal with random shooting a lot because my item1 height manipulation was bad but I made it to work. You can manipulate item1 heights by shooting boomerangs all over the place. RNG seed for item1 was pretty random and it took a while to figure out. I intentionally jump one frame later off from the water to manipulate underwater boss rule for the Bubbleman refight. It really doesn’t matter even you did lose a large amount of time because this stage has 16 frame rule instead. Previous route used an extra menu change and it picks up a refill at Wily 2 and uses item2 at Wily 3. When we enter Wily 4 with this new strategy instead, we gained 32 frames over the previous version I did for comparison as well. I finished two runs, one with the old strategy and one with this new strategy.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (various testing and ideas)

Dr. Wily 4

I had some difficulties to make the first item3 to work correctly. I found out that the third item1 height affects its behavior a lot. It just jumped off when I wanted to continue my gameplay. I had to go back to the Wily 3 boss fight and try to find a place to shoot boomerangs differently so my third height was set correctly. I also fixed my Y position just before I enter the room where I zip to go further on. This saved a good amount of time and it’s being used on RTA runs as well. I had to do some manipulation for item1 heights for the room where I use three of them to go up and zip. They needs to be aligned correctly so I won’t lose any additional time. I tried to look at the boss fight for possible improvements but I couldn’t find anything relevant. I also tried RTA method for fun even I knew it was going to be slower.
Gameplay:
  • Shinryuu (main player)
  • aglasscage (various testing and ideas)

Dr. Wily 5

Okay, this stage is random. You can actually manipulate your subpixel positioning a lot just before you leave a boss room. It was imporant to try different outcomes out. Boss patterns are tied to the subpixel position when you enter the room. WarmCabin was worried about the Crashbomb usage at Quickman fight so I took a closer look at it. I found a way to go behind Quickman pretty fast and use all of my Crash bombs. This new method alone saved 28 frames. I also gained an additional one frame along the way.
Gameplay:
  • Shinryuu (main player)

Dr. Wily 6

Silent room, sweaty drops and zipping. Spamming the heck out of the boss. Nothing special, nothing saved. The end.
Gameplay:
  • Shinryuu (Main player)

Comments

Shinryuu
I’m happy to see that I got things done. It took years but I still made it. I want to thank all people who have helped me up to this point. FinalFighter wanted to tell about $1C aka. The frame rule below. Be sure to read that. I learned to optimize, predict and understand item1 height values even more better and how they did work on different randomness seed. We had to deal more with frame rules and they became my new friends at least on some level. FinalFighter was also surprised, happy and encouraging when he noticed that we can perform DelayScrolls perfectly without their help. Learning opened more roads for us.
FinalFighter
Adjustment of the frame rule by delay scroll can break the frame rule. A: Timing of music in Rockman 2, music is played and the delay scroll succeeds when the same music is played. This is because music is processed every frame. Even if there is a lag frame, processing of music is performed even if it is a lag frame, so the timing of the delay scroll is the same frame. B: Frame rules Rockman has various frame rules such as Boss gate, item recovery etc. these follow the value of frameCounter=$1C. These are executed when the value of $1C is divisible by 4 or 8... etc. C: Frame Counter frameCounter=$1C changes every frame Although frameCounter=$1C is basically +1 for each frame, this process is not performed for lag frames. 
D: Adjustment of $1C by lag frame before delay scroll 1: Increase or decrease lag frame before delay scroll
2: Execute delay scroll. (The timing of the music is the same by increasing or decreasing the lag frame, but the value of the frame counter is different). 
3: Touch the boss gate or energy when $1C is divisible 4: Savings occur because the frame rules are better timing *Effect of sprite blinking on delay scroll sprite flashes because the lag is great at the dog sprite blink processing determines heavy frame depending on whether the frame counter is odd or even. 
This contributed to the improvement of the success timing of the delay scroll. This also depends on the frame counter, so adjustments can be made with lag frame increase / decrease and delay scroll. Comment: Our boss was frameCounter=$1C, not Wily! And we are working on another new Rockman 2 TAS!

Special thanks

pirohiko
For doing extremely precise calculations for stuff. He’s a silent but reliable person to have around! He and FinalFighter usually talked about possible strategies. FinalFighter worked as a translator at most of the cases.
warmCabin
A Youngster with a good taste of curiosity. An active talker who pointed several things out such as finding a way to beat Flashman faster, how to save subpixels when you drop and don’t lean to the wall and how not to reset your speed while shooting a leaf shield to the up or down. I let him to write about his findings and stuff for my submission text. He’s quite a fast learner and he’s not as senile as I am right now. He’s not an author but he pointed several things out that helped our run. This is my way to say thanks to him. So, here goes;
  • I first met Shin about a year ago when I was just starting on my zipless TAS. He was like the last of the ancient sages--his TASing days behind him, but willing to espouse his great knowledge of frame rules and delay scrolls.
  • At one point, he sent me a WIP movie, which he hadn't touched in quite some time. We toyed around with my new subpixel tech, but it wasn't enough to break the frame rule. Then I turned my attention to the boss fight. It had been improved since the 2010 submission, but it was not perfect. You see, bosses in this game can be hit every 20 frames (19 if you ask nicely), and my script was picking up a 22-framer. An imperfection. So, I spent an hour or two trying to eliminate it. With a tight jump that pushes the hitboxes to their absolute limits, I was able to achieve a perfect 19/20 fight, which was just enough to break the frame rule. So Shinryuu's WIP, which was about halfway through the Robot Masters, was now only ONE LEVEL IN. This is when he began work on the run in earnest.
  • Slowly but surely Shin got ahold of his old friends, and the whole crew from 2010 came back together, sharing movies and ideas almost every day. They're a bunch of really smart people, and I'm proud to have contributed anything to such a well-understood game. I've had a ton of fun investigating this game and I hope you enjoy watching everyone's hard work!

Possible concern about console verification:

I noticed that by shooting some poofed item1 shots for a show at Bubbleman affected sprite processing at Woodman. I’m referring to the third dog scroll we had numerous issues with. For some reason the sprite processing is different compared to anything else. I noticed that especially first item1 height affects the processing and those “poofed” shots even they won’t change any of those height values expect, they do consume energy. I also investigated item3’s right width values and couldn’t find anything suspicious. I have no real hardware to run this file through. I’m interested to know if emulation is flawed or is it just something we just don’t know yet.

Screenshots

[dead links removed]

Maru: Judging.
Maru: Replaced file with a stylistic improvement at the request of the authors. The overall time of the movie remains unchanged.
Maru: Replaced file with another stylistic improvement at the request of the authors. The overall time of the movie remains unchanged.
Maru: Great run! Both the audience feedback and optimization were great.
RM2 is a challenging game to optimize due to the framerules, wide variety of zips, and need for tight subpixel management. Needless to say, these tight optimizations have added up quite nicely in the end. The new Woodman route and the setup to make that route possible was impressive and mind-boggling in many ways. The creative routing in the Wily stages of the TAS cut down menu and item changes and used items more efficiently, and it is one of the main improvements over the published run.
Note that while the comparison video and a manual comparison may show that this TAS lost time to the published run during certain boss fights, this is because of framerules in the game that prevent small improvements from helping. Similar to games like SMB1 and SMB3, you may have to save a handful of frames for an improvement to matter in the end.
While some people have showed concerns over console verification issues, this is not the first time that this has occurred, and this does not prevent the movie from being accepted. Console verification is a good way to put a cherry on top of a splendid TAS, but it is by no means a requirement.
The improvements found over the years have come together nicely, and this TAS is as entertaining as the branch has ever been. Accepting to Stars.
feos: Pub.
Last Edited by adelikat on 11/1/2023 12:02 AM
Page History Latest diff List referrers