Submission #2921: Shinryuu & finalfighter's NES Mega Man in 12:23.34

Nintendo Entertainment System
(Submitted: Rockman)
FCEUX 2.1.2
Rockman (J).nes
Submitted by Shinryuu on 11/27/2010 8:16:22 PM
Submission Comments

Rockman TAS by Shinryuu & FinalFighter

-Welcome to the glitchfest where mathematics and creativity meet-
Beats previous run by: 3 minutes and 04:70 seconds (11082 frames)
Streaming/Downloading urls:
  1. nicovideo (account needed)
  2. nicovideofire (free)
  3. nicoplayer blog (free)
  4. Flygon's ScrewAttack encode (free)
  5. fsvgm777's encode
  6. sgrunt's HD encode

It's been a while guys! Completing this task was rather interesting, hard and easy on some parts depending about the situation you were in. I would have finished this run a bit earlier but I've had rather hard time for a few past months, that's why I was a bit outside from Rockman 2. Because I wasn't able to put much effor on Rockman 2 I decided to make more interesting run for this one. I have always wanted to beat this game but I haven't had time and courage to do so but now I was able to do ten times more than that! Playing this game through was really serious attempt from me even it was a bit reckless thing to do. Be sure to use Rockman (J) rom because this won't sync with Mega Man (U) at all, your movie stops when DelayWaterCurrent should occur, there's a really minimal difference in NEXT value. I bet different intro screen is causing it not to work. No need to be afraid about bots because refill manipulations are optimized and played by a hand and for a good reason too, only ones with bots are DelayStageClear glitches which are impossible to perform without them. Yes, DelayWaterCurrent is possible without any botting, you'll just need to get NMI's NEXT value to "1" which was somewhat easy in Iceman stage because conditions there was more better than we expected. We tried to keep eye on rerecord count because a few people requested to keep bot recordings safe too. Since I had to go out from school apartment because of autumn break, I forgot to save my record log for W1's DelayStageClear and I only remember my first botting took something like 50 000-56 000 rerecords and second attempt took more then 100 000 rerecords so I didn't include them in the run. Own personal playing and optimization took around 60 000~70 000 rerecords. I gladly introduce you to this ride of speed and entertainmnet.

How everything started?

There's a ridiculous answer for that a long time ago FinalFighter contacted me and said that he could use Deign's gameplay and put own new ideas and tricks together. FinalFighter saw through Deign's subpixel optimizations and he sometimes mentioned how well it was done. I opposed him and said there might be something I can test and find or even improve something, FinalFighter said it's fine for him to wait for my return. After struggling in the world of subpixels I found several ways to turn a few manipulations upside down and gain some frames and subpixels. Time by time and from technique to another I began to understand how this game somewhat works, I usually got some ideas straight from RM2 experience like positioning yourself in to the right position while crabbing ladders so you appear from the left position at the top of the ladders, for some odd reason Deign forgot to optimize some of these parts. That gave me even more inspiration and motivation to go further on.

What things are important to know about?

The most important things are to keep really sharp eye and look for subpixels because they matters a lot and chooses your final result, this was heavily seen in Deign's run. They becomes easier to follow when you're forced to check them out all the time, so actually you grow, no you will grow up with them. Second is to check magnet beam lenghts because you must determite how long they are because you can't just spam them around, there's a rule how many of them can be in the screen at the same time before you can use another one and we all know it's 5. Sometimes it's possible to avoid this kind of situations so you could use different lengths as you please and find more interesting ideas later on, but be sure to know what you are playing around for. Pretty simple and powerful way to advance with this run was to combine ideas all around with different states of mind together. I hope there's not going to be much arguing about this run because this skips 2 and half stages and DelayStageClear makes next stages to look a bit glitched, especially when you go to next screen. These tricks put us in a whirl of pressure where we felt miserable but we found the way out, so we wish to have a little respect instead of hearing arguments all night long.

Emulator details

  1. FCEU 2.1.3 (tested with 2.1.3 and 2.1.4)
  2. Be sure to use OldPPU because NewPPU won't sync/work with Delay glitches


  • Aims for fastest time
  • Uses Death as shortcut
  • Takes damage to save time
  • Heavily manipulates luck
  • Abuses the game

Improvement list

Stage Gained Overall
Elecman 9 9
Iceman 89 98
Fireman 40 138
Bombman 3404 3542
Gutsman 33 3575
Cutman 74 3649
Dr. Wily Stage 1 3386 7035
Dr. Wily Stage 2 4100 11135
Dr. Wily Stage 3 4 11139
Dr. Wily Stage 4 -57 11082

Stage information

Elecman stage:
This is where everything started. In the most Rockman series you don't see this kind of stages because this stage is full of climbing. I had to level up myself with this stage because I wasn't so ready for some hardcore subpixel positionings. After struggling in the world of subpixels I understood the trick and continued forward from my private exercises. Firstly I understood sometimes you'll have to sacrifice subpixels in order to save them! Imagine a situation you have maximal subpixel value as possible and you must jump over a ravine, when you are on the very last X position and you'll have to jump -> you drop instead because subpixel position rolls over too much. Time by time after following subpixels I found a way to jump one frame faster in the first identical block room, the frame comes off from the very last block of the room when I'm attempting to jump. Two screens after I had a huge couldron of lag in my hands and I had to find a way to without losing my one and precious frame, so I begin to make random movements to see if lag calms itself. By doing this I found extra fast route out from this maze and I was more than satisfied with my results. In the next screens I found out that current run didn't face left in most of the cases when you were on the top of ladders. When you are on the top of the ladders and face left while performing your zip, it's 1 frame faster to do so. I fixed those and continued forward on. In the end I saved 9 frames off from this stage.
Work sharing: Shinryuu
Iceman stage:
Before entering to this stage FinalFighter told me about a new trick which has the same speed up effect like in Dr. Wily 3 stage's water area, it's known as DelayWaterCurrent. It works when certain conditions are met with the enemies etc. and your NEXT valúe reaches number 1. FinalFighter made his first attempt with this room but I improved it by over 70-90 frames by investigating it for about two weeks. Of course I tried to combine magnet beam values in order not to lose so much time the beginning of room #3, because first room went so fast there were no possibility for magnet beams to keep up, that's why I can't shoot it so fast like it was in Deign's run. In the gate room I found a trick neat trick to save time which is straight from Rockman 2, when you hit the ceiling you drop down faster, right? So you can find better place for 40 and 41 magnet beam length values and speed up your progress. There's nothing new with the boss fight, just the same usual fight.
Work sharing: Shinryuu, FinalFighter (DelayWaterCurrent)
Fireman stage:
I adapted ceiling hit in the beginning of the stage and it worked. After progressing to the middle of the stage I realized I lost all of my frames and I wondered why? I restarted and played from the beginning again and compared things and I realized I had very strange behaviour with lag, in a word I had lag in unusual places. Like game tried to limit my playing somehow. No matter how I played the stage from the beginning.. end result was always exactly same or even more worse. In the last screen I tried to think where to consumne one extra magnet beam and later on I found a perfect use for it, when I'm performing my last zip before going to the gate room I loaded my gun -> dropped off -> went so right as possible -> turned left not to lose magnet beam -> turned right and shot magnet beam out -> took damage -> and jumped on the magnet beam to zip through the gate. This trick is also used in the end of Elecman stage. A little time saving comes from better boss fight where I moved myself more closer to boss, because I was more closer to him I was able to make things go more smoother without having silly 3 frames of lag.
Work sharing: Shinryuu
Bombman stage:
This time around this stage is played a bit differently having a trick known as DelayStageClear which calls for value(s) that completes the stage. Even this stage is almost skipped from the beginning it doesn't mean it was anything easy to do. This trick is one of the hardest ones in Rockman history and it made our attempts to look really miserable. First we tried manually to find certain values such as NEXT=0, we succeed in that but we still were far, far away from our goal. This trick needs a bunch of values to be in exact number. Over 3 months passed and FinalFighter contacted me about a new bot which could optimize things upside down. First results were pretty bad (because the success rate is exactly 1:1 327 665 or simply 1:250000), when bot was ran for 14~15 days it found the one and only polished success out from nowhere. FinalFighter calculated things out and did a graphical table about the time and values explaining where was the most fruity place to succeed with our movie.
Work sharing: FinalFighter (DelayStageClear and investigation), Shinryuu (Investigation)
Gutsman stage:
Because DelayStageClear messes things up you cannot see your health, points nor weapon bar anymore and stages are going to get glitched in graphics, especially when you go further on or die. DelayStageClear also has a effect to shave some lag off in certain places, this happens because game doesn't draw everything in the screen (background?) screen. This glitch doesn't affect screen scrolling speed at all. About 9 frames or so comes from the beginning because of the glitch, after progressing and and trying to manipulate big refill to come out I found the most optimal route for it (X position was more than high enough and refill came out in the first shooting frame as possible) and I was more than happy with it. I improved gate room by hitting the ceiling and the boss fight with taking some damage and placing myself better to get some lag off.
In previous movie Deign said "This trick I'm speaking of is the leftward zipping. To perform it requires an extreme amount of subpixel optimization.". When I performed that trick I was able to make it on the fly and I didn't face any problems with it, also I tried different subpixel positionings but they didn't seem to have much effect. Basically it doesn't need THAT much optimization in order to succeed but it's good to aim for best subpixel values as possible.
Work sharing: Shinryuu
Cutman stage:
Uh oh I improved first screen by placing myself better to gain some subpixels and glitch helped me to get more less lag free playing. In the next screens I found improvements not to make minimal jumps as possible inside a wall while zipping and glitching. In the room with background zipping I found more better way to avoid getting hit by a bullet, I optimized my X position and went to leftmost edge soon as possible -> pressed jump button and select two times in order to stop bullet animation while I went upper and upper, upper, landed and jumped. I also found 2 frames faster manipulation route for getting big and a little refill. Because I did big and minimal refill manipulation backwards I was able to land some pixels sooner to make my glitcing faster. Next screens are also optimized more better without jumping every frame while glitching inside the wall, also in the screen with select pressings was far more less lag and I avoided the final select pressing in order to save some time. I did refill manipulation backwards (Big -> Little), had a better subpixel positioning and I was able to gain a few frames because of them. Gate and boss rooms are improved by hitting the ceiling and placing yourself better to have a bit more lag free playing. Cutman fight is now 3 frames faster by doing so.
Work sharing: Shinryuu
Dr. Wily Stage 1:
I found ways to gain subpixels but my plans died in vain because you'll have to wait before zipping inside the fortress. Because DelayStageClear was going to be used soon I used some extra magnet beams to climb faster before entering to main event screen. I lost 3 frames there on a purpose because magnet beams were conflicting with a correct manipulation. This DelayStageClear requires at least 5 enemies around of you and you'll have to reach about the half of the screen. This also took some time to perform and it wasn't easy task at all even this was far easier when compared to Bombman's one. Even I used some extra magnet beams to climb up faster it doesn't mean I lost more in W4 stage because my magnet beam value was 16 instead of 18.
Work sharing: Shinryuu (Gameplay and DelayStageClear), FinalFighter (DelayStageClear)
Dr. Wily Stage 2:
We thought by aiming in W1 75 (DelayStageClear) value with 6FA would solve the problem with W2's DelayStageClear and it make it possible to perform. In the end it wasn't possible to perform at all because 6FA value got rewritten all the time which lowered our spirits a bit and we had to face another trick that had more lower succeeding percent "DelayWarpDeath" which also did not work at all! Weeks later FinalFighter contacted me and said he found a solution how to perform DelayStageClear in this stage. The most important key was to make a glitch called DelayObjectTech before DelayStageClear to prevent values etc. from changing.
Work sharing: Shinryuu (Gameplay and manipulation) FinalFighter (DelayObjectTech and DelayStageClear)
Dr. Wily Stage 3:
This stage doesn't afford anything new expect we had a bit lower subpixel position to work with caused by positioning in DelayStageClear but result was exactly same in the end because you can manipulate your positioning before jumping on magnet beams or inside the walls while zipping. I didn't use bot for fighting the boss unlike the previous run did and I tried to predict boss' movement by random keypressings which I found out really easily after investigating its mechanism a bit. For some odd reason this stage turned out to be 4 frames faster. Also W3 reminds me a bit about Rockman 2's Wily 3 stage which is also filled with water and gloomy atmosphere.
Work sharing: Shinryuu
Dr. Wily Stage 4:
This stage's a bit different because we had different magnet beam value (16 vs. 18) thus losing 15 frames in the beginning of the stage but I was able to turn it down to 5~6 frames. I tried to find different ways to gain subpixels along the way like pressing left during on magnet beam zippings etc. but none of them worked. It's still interesting this is the only stage that uses death as a shortcut and it feels like this game is compatible with Rockman 2. I bet Wily got some serious goose bumps after we harassed and glitched his plans all day long but he got his revenge because we had to sacrifice a big bunch of frames in the boss fight because of those glitched graphics caused by DelayStageClear! In the previous movie hit pattern went nicely 14 frames per. hit almost without any extra lag but because of that corrupted background the shortest time to hit was from between 16 to 14 frames depending about your time x shooting frame. 06C1 is a value to check Boss HPs out and it came really handy and easy to follow during the battle. I placed Rockman a bit more to the left incl. my movements from the first Wily Machine in order to find most optimal route out which was to hit Wily Machine 2 at xxxx5 frame from far away to avoid any extra lag not to mess select pressings up. I also tried different combinations and subpixel positionings but they didn't seem to have effect at all. This battle took exactly 3 days to perform because lag really confused my thoughts and I had to arrange things more radically than before.
Work sharing: Shinryuu

Tips, tricks and techniques

There's a slight possibility to gain some subpixels while you zip on magnet beams, just press left 2 frames before you drop off and see your result, your subpixels rolls on the positive side. It's only natural this trick won't work all the time and explanation for it lies in subpixels, you have to know how subpixels works and what's the best subpixels to use before dropping on magnet beams and your result is guaranteed. Usually it's better to play randomly and polish previous efforts.
It's pretty recommended to face right when you grab ladders before you're going to perform your planned zipping. When you face right and grab ladders and climb top of them you are facing left, right? Now when you press up and down, you'll start zipping immediately without waiting for one frame. This trick is famous and known from rm2.
When you enter to between gate rooms (Before the boss room) you can save 4~5 frames by making maximal jumpings so you hit the ceiling and drop faster down (This idea came up from rm2 too). When you do this you can place magnet beams way more better and faster. In the boss rooms magnet beam lengths goes usually like this: first = 40 and second one = 41.

Useful corner

I bet this corner is more than useful so I invented it in this submission. Here you can find memory addresses and things you might to know about in a one section.
Magnet beam, randomness seed and other things:
Most of the information are taken straight from Rockman thread because there's still great and interesting information left for us to read. So be sure to read following links if you're not familiar with them. I'm not posting every possible piece of information to this section because it's useless to do so, these are really interesting and important ones to know about.
Bisqwit's information for randomness seed, magnet beam related things and discoveries about coordinates, click 1 and 2 and 3
DelayWaterCurrent, DelayWarpDeath and DelayStageClear:
The most inhuman tricks no one would have known possible. Namely these following glitches were found by FinalFighter expect DelayWaterCurrent was found by both cstrakm and FinalFighter. DelayWaterCurrent is a glitch which speed ups your speed just like when you play through Wily 3 stage. This glitch occurs when your NMI's NEXT value hits "1" value. There were a discussion about these tricks in Rockman thread which can be found from 1, 2 and 3
DelayWarpDeath is a bit similiar like DelayDeath in Rockman 2 but this time it's thousands of times harder. You must get NMI's NEXT value to "1" but that alone won't help because in Dr. Wily 2 stage when NEXT turns to "1" your game might reset or go to glitched level select screen and you'll start from Dr. Wily 1 stage again. In a word combination without reset or glitched level select screen is more than necessary. After that you'll have to call for Object5D which succeeding percent is extremely low. Also here's a movie which uses a cheat to make it happen to demonstrate it quickly:
FinalFighter's graphical chart for DelayStageClear of Bombman stage can be found from -> as you can see the success rate is incredibly low as ~ 1:250000. And the day when DelayStageClear was discovered.
It's pretty recommended to turn lag counter on to see frames where input cannot be reached -> laggy frames and some waiting scenes are counted. Also you can check out input display option to check key pressings out, if you notice some unusual key pressings somewhere they are there because both my hands and fingers crambed.
If you want to follow, check or do anything with magnet beams open up your hex editor and go to 05A0 value. When you shoot you should notice there's a number which increases, that's the length of your first magnet beam. When you spam your second magnet beam out the next value is rising etc. up to 5 magnets per. screen.
Memory addresses, technical data etc.
Some fun and simple memory addresses:
  1. Datacrystal's ROM Map
  2. Datacrystal's RAM Map
TASvideos own pages has much information about techniques:
  1. Rockman technical data
  2. Techniques and tricks in Rockman series
Feel free to check Rockman thread out, there's a huge couldron of useful information about how tricks and things works: Forum/Topics/260
The mighty source code of Rockman
This might interest many people out there so I wanted to put it here.. so feel free to check it out!
  1. Original source: Bisqwit's site
  2. Alternate mirror Source code at yuko2ch
If you want to credit someone, be sure to credit Bisqwit who created this great documentation.

Comment section

Shinryuu's comments

Like I stated before this run started from a bottomless ravine when FinalFighter was going lend/use/copy Deign's work as a base project with new tricks he discovered but I opposed him and wanted to improve things over. It was more than fun to work with this because it was interesting to try different routes and other stuff out and not to have worry about things so much like in Rockman 2. I salute to Deign for using effort to this game which was the main influence and motivation to start this run. It's still interesting I found tricks that could have been found a long time ago like the trick to shave some lag off from boss fights, just to place yourself better. First I was aware I couldn't make any improvements over Deign's run but time by time I overcomed the "fear", accepted things how they really were and then I improved cases more further. In cooperative work with FinalFighter there's no such a thing like as "arguements" between us, we just accecpt things, find the absolute answer and think possibilities over and try to make them even more impressive. This game has a long history and the main player for making a list of previous efforts and many runs was Bisqwit who created this site in the past. The very first run was done by Morimoto itself without abusing game so much, if I recall correctly. I'm making tool-assisted speedruns because I want to surpass different situations with my own hands and even a little bit of effort makes me to smile. There's still much more I want to tell about my progress but sometimes it's hard for me to make up proper words and sentences. Also I want to thank #tasers channel where Japanese players gather to put their ideas together. Without FinalFighter's assistance, motivation and incredible investigation this run wouldn't have been done like this. Thanks for reading and supporting out project.
- I support and want people to find their own personality to make their own art in runs. You have a permission to feel a great so called "a-ha experience" which is one of the basics in origanility where you can even surpass yourself and people around of you. To think things in creative way is not a simple matter because your thoughts brews in a many different ways before the final hatch and production(s), but keep going! People are engaged to everyday life where different situations, stress, thinking and other things limits your own originality where you could fly in the spheres and deny flaws of the nature. I had to write this because I felt so excited and over energetic to grasp something.

Final Fighter's comments

We came to be able to use "Delay Glitch" even in the world of Rockman 1. Mr. cstrakm reported about the case where the water current is generated. In addition, I investigated the cause accurately. Then, I discovered "DelayStageClear"! I and Shinryuu worked on new a TAS and accomplished shortening it a big time. When we use DelayObjectGlitch, we can call a specific object in the specific location. The kind of the object that can be called is decided by the place.
The following techniques were used in this TAS.
1: IceManStage DelayWaterCurrent(Object2F) In the Iceman stage, the water current is generated in the part.
2: BombManStage DelayStageClear(ObjectF5) which took 1327665 rerecords.
When we use DelayObjectGlitch with BombManStage, we can call the object of 00-FF. "ObjectF5" can be called very uncommonly. When ObjectF5 is called, the routine of StageClear is suddenly called. Program refers to a special memory when we use DelayObjectGlitch. $2006+X: Special memory that PPU uses. I created HackROM for test. DelayStageClear is impossible with NewPPU of FCEUX,debbuger of Nintendulator but DelayStageClear is possible with OldPPU of FCEUX, Nestopia, Nintendulator. Mr.Inzult tested this by using PowerPak with a real NES. In a word, DelayStageClear in the BombManStage is possible also in real NES! (OldPPU of FCEUX is proven to be correct.)
Graphical table is available here:
I have increased the drop item beforehand.(To make the amount of instructions become easily to 1.)(Moreover, only Object10 and 20 appear when there are a lot of enemies.) I executed BOT for a long time, and obtained the success case.
3: WilyStage1 DelayStageClear(Object75) which took 1298595 rerecords
When we use DelayObjectGlitch with WilyStage1, we can call the object of 00-FF. When Object75 is called, the routine of StageClear is suddenly called as well as ObjectF5.I and Shinryuu executed BOT for a long time , and we got a success.
Graphical table is available here:
4: WilyStage2 DelayStageClear(Object5D->75routine execute->DelayStageClear) which took 1467496 rerecords
Object5D appear when DelayObjectGlitch is used in the part.The routine of the magnet beam is called on the way when Object5D appears. And, the memory for each $610-$6FF values are mad. And, the value that exists in $608 or $618 might be copied onto $6A8. $6A8 is a memory used for the enemy's AI execution. When 0x75 enters here, the routine of a DelayStageClear is executed. I have adjusted for $618 to become 0x75 easily. ($618 is the 9th enemy's Y coordinates. )And ,I executed BOT, and obtained the success case. Moreover, I am avoiding SoftReset by pushing the select button immediately after the appearance of Object5D.
Graphical table is available here:
Explanation of DelayObjectGlitch
Details are here:
1: Explanation of DelayObjectGlitch.
When usually processing it, bank number changes into bank6, and the enemy is read. However, when NMI is generated just before ChangeBank, the data of bank 5 is used. As a result,DelayObjectGlitch was caused.
2: Explanation of enemy AI of object.
For instance, when object F5 appears.
1: The enemy's AI routine execution
2: The jump adress is calculated from the object number. Jump address(mad)=$C0BD
3: C0BD is an address on the way of stage clear processing.
4: StageClear is caused suddenly.
3: DelayObjectGlitch support LuaScript collection.
The DelayObjectGlitch succeeds when adjusting to (NMI) NEXT=1.
LuaScript where "State for DelayObjectGlitch" is reproduced by using cheat.
This Lua temporarily rewrites the BankNumber in 5. Glitch emulate and ObjectNumber is shown. delayclear.lua,delayclear2.lua,delayclearw2.lua files are LuaScriptBots and they were used for DelayStageClear.
4: DelayObjectGlitch supports HackRom.
HackRom with the same function as rm1delaytest.lua. Validity in a real NES was confirmed by this HackRom.

Special Thanks

Mr. cstrakm
He found the DelayWaterCurrent in the icemen stage. In this TAS, his discovery was a start.
Mr. Shinryuu
My best partner. Places other than DelayObjectGlitch also saved time. This TAS might not have appeared without him.
Mr. Inzult
He showed that my HACKROM was used and this technique was possible by a real NES. We wish to express our gratitude for his cooperation.
Mr. AlphaBeta, Mr. NinjaSuperK, Mr. Vagla, Mr. Bisqwit
They made analytical material of very detailed source of Rockman. It became easy for me to analyze DelayObjectGlitch.
Mr. adelikat, Mr. Nach
They taught OldPPU and NewPPU. And, they gave the idea of the solution.
Mr. Dwedit
He corrected the problem of OldPPU of FCEUX.
Mr. Deign
He discovered good a lot of routes in old TAS.
Mr. Pirohiko
He made movie for Nicovideo. I consulted about TAS with him.

Possible screenshot suggestions:

Baxter: I guess I'll have to give in to the claiming judgements trend... claiming for judging.

adelikat: Fixed rerecord count.

Baxter: Great improvement to the published run. It seems the run is finally glitchy enough for people to want a non-glitched run. Meanwhile, accepting this glitchfest.
Flygon: Processing.
Last Edited by adelikat on 10/5/2023 9:55 PM
Page History Latest diff List referrers