Super Mario World is a game which needs no introduction. Many people have tried and studied this game, and their skill and knowledge are still growing although almost twenty years have passed since it got released. Now the currently published run is beaten by 4.5 seconds, which I never believed when submitting it.

Game objectives

  • Aims for fastest time
  • Takes damage to save time
  • Abuses programming errors
  • Emulator used: Snes9X v1.43+ v16

Comments

This run gives an improvement of 269 frames, and consists of two of big improvements and many of minor improvements. One of the two is a dragon coin glitch idea in yi3, which has been dreamed for at least one and a half year and had not been available until May of 2009, because we had no way to duplicate turning blocks fast enough without hitting the message box.
We want to thank all the members of #TASers; this run would not be completed without their cheer.

Tricks used in this run

In this section, I'm going to explain dragon coin glitch, “double hit” trick, “cancel rise” trick, subvelocity, “passing through corner” trick, “pressure of solid objects” and block duplication away from blocks. In addition, I will mention what we know about lag (both in-level and fadeout).

Dragon coin glitch

A dragon coin can be cut by duplicated blocks, and we can get its upper-half (sometimes lower-half) piece. Then an invisible block is produced. This block is indeed a “wing-balloon-shell-key” block. This glitch is very powerful because it leaves us possibility to short-cut a long level such as an auto-scrolling one.

Block duplication

When we duplicate a block using an item, the item needs to be with x velocity 0 and go into the block by at least 7 pixels from its bottom, and the position of the duplicated block is determined by the direction to which the item is pushed. If the item goes into the block by 15-16 pixels from the bottom, the block is duplicated to the above, and if the item goes into the block by 7-10 pixels from its side, then the block is duplicated to its side; if both are satisfied, the new block will be generated above-diagonally. But note that oscillation of items in a solid object affects whether we succeed block duplication to the side or not.
A variant: duplication away from blocks. Block duplication can be done with an item thrown up away from blocks. As explained above, an item needs at least y speed 97 in order to duplicate a block. After throwing up an item, its y velocity moves in the sequence: -112 -109 -106 -103 -100 -97 -94, so there remain only 7 frames in which it can go into the block by 7 pixels after it gets thrown. The following table shows when you should throw up an item to get block duplication; distance means “how far an item is from the block”, and subpixel “subpixel of the item”.
distance07131420262733
subpixel00-F000-C0D0-F000-6070-D0E0-F000-1020
A variant: duplicate a turning block by dropping an item. In the case where a turning block is on the ground (or a block), we can duplicate it by dropping an item in such a way that it bounces off the ground just before the block stops turning.

Get two items from one block

If mario and a shell make a hit at a block at the same time, we can get two items. There are many other ways in which we can get multiple items from one block. See also ISM's demo.
A variant: Get two yoshis. Producing two yoshis at the same time shortens yoshi's growth motion by 32 frames (each of them decreases the growth timer 7E18E8 by one per frame, and the timer starts from 64). Using a triple hit we can shave off 10 more frames, but many yoshis might produce much lag, so we will get less advantage in many cases.
A variant: Rapid duplication of turning blocks. When we want to duplicate turning blocks many times, we must wait for the duplicated blocks to stop turning. To avoid this, by hitting four other turning blocks, the duplicated one stops turning. This however takes many frames, for example when without caped. We can shorten this routine by using double hits; each double hit produces two turning blocks, so we have only to hit them two times in order for the duplicated block to stop turning. This is useful when combined with a dragon coin glitch.

Pass through a corner

We can go into a block by passing through its corner in an appropriate way. This glitch has already been explained in my post in the forum. Keep trying again and again, and you'll be able to get it with little pains!

(horizontal) pressure of solid objects

When mario is in a solid object, it pushes him to the left (or to the right sometimes). We can abuse this pressure to get a boost:
  1. The well-known corner-boost is one of variants of pressure abuse.
  2. By passing through a corner, we can get a boost. Moreover, if we are going to the left, we can pass through two blocks or more as in the second room of dsh.
  3. If mario jumps toward a ceiling (or a block) with ducking and the takeoff meter is still positive, mario's head sticks into the ceiling, which pushes mario to the left or right. So we can sometimes get a boost. This is used in the dark room of Front Door for example.

How to cancel a rise

Although this is partially explained in my reply, I would give a self-contained explanation here for the sake of no ambiguity. Assume mario is flying to the right. When he starts going up after an air-catch, mario needs to be facing to the right (even while cape-spinning; watch mario's facing direction 7E0076), so we can cancel his rise by manipulating cape-spin timing in such a way that he ends up facing to the left, and then he can still go up soon again unless his y speed exceeds a particular value (depending on which the air catch is normal or higher). This trick can also be done by making mario's x velocity nonpositive after an air-catch. In this run, this trick is used here and there, especially in bowser fight, where we try to stay at a fixed position for example.
A variant: continuous air-catch. After putting mario into the diving animation, we can cancel a higher air-catch by making his velocity nonpositive. But as explained above, he can still catch air soon, so by making his velocity positive again he restarts going up. Iterating this process, he gets “continuous air-catch”. This is useful in such cases that we want to go up soon after entering a door (e.g., after entering the first door of dgh). This trick also eables us to get a “fly stuck to the ceiling” trick from a lower position.

Subvelocity

Subvelocity 7E007A (of x direction) is the fractional part of x velocity, which is used only for calculation of acceleration (and deceleration). For example, both of going with velocity 48 and going with 48.5 give the same result. This explains mario's irregular acceleration and deceleration, and is useful when we want to optimize 6/5 in slippery levels where the 6/5 is no longer optimal (it is better to use something like 6/5/26/13 (average speed 48.68627...) rather than 6/5, which is however in such ideal cases as there are no slopes, no enemies, no pits, and so on, so it should be done case by case).
A variant: -1 trick (a.k.a. turnaround trick)
I had to explain this in the previous run, but Chef Stef has given it; I should like to thank him. :) Similarly, we can optimize mario's acceleration when turning actually (e.g, before grabbing the feather in dp1). For example, a sequence “-14 -9 -4 1 3 4 6 7 9 10” gets into “-14 -9 -4 -1 4 5 7 8 10 11”, and so on.

How to reduce lag

We have to reconsider lag occurrence, and the current description of lag seems to be neigher sufficient nor essential. Anyway, I'm going to write down what we know about lag, although we are still away from complete understanding.
First of all, there is no doubt that lag (both in-level and fedeout) depends on any processings such as sprites' actions, moving layers, fadeout, etc. So if we want to reduce lag, we have to manipulate any of them. But we historically know lag should depend also on score. Why? The game must do sorta many processings around scores; the score is kept in memory addresses as a hexadecimal value, while the score drawn on the screen is decimal, so the game converts a hexadecimal score into a decimal score every frame. I think this conversion makes dozens of processings and thus a large score amounts to increase lag. For the same reason, mario's lives and coins could also increase lag. In order to manipulate lag, it seems enough to hold down the sum of the digits of the score, and the second digits of coins and lives (or also their first digits, but I'm not sure).
Because heavy control of scores, lives and coins often keeps smw runs away from being entertaining, it should be traded off for entertainment. The smw any% run is not the case, though.

Level-by-level comments

The number in each heading (except for yi2 and yi3) indicates how many frames are saved compared to the previous run, without counting the change of fadeout lag. The numbers in the headings of yi2 and yi3 are those of frames saved between entrance into the current level and into the next. This spreadsheet may also help you.

Yoshi's Island 2 (-158)

We get yoshi in this level in order to use the dragon coin glitch in the next level. Producing two yoshis at the same time shortens yoshi's growth motion by 32 frames (each of them decreases the growth timer 7E18E8 by one per frame, and the timer starts from 64). Moreover, we try to get less coins to reduce fadeout lag of iggy fight. We lose 158 frames before entering yi3.

Yoshi's Island 3 (359)

The main part of our improvement; it took over 30,000 rerecords to optimize this level. It was a revolutionary idea to use double hits to dulplicate many turning blocks, and the discovery of block duplication away from blocks enables us to avoid hitting a message box and getting a dragon coin even when they are near blocks we want to duplicate. In order to keep p-meter until getting yoshi off, we use 6/5 and platform-boost. We get 359 frames (and totally 199 frames) before entering yi4.

Yoshi's Island 4 (0)

No change.

#1 Iggy's Castle (0)

No change. But in this level, we found that the number of coins we get has to do with lag. It was after almost completing movie that we noticed this fact, so we redo yi2 through C1 to regulate the number of coins. After we changed it from 66 to 35, 4 frames of fadeout lag were shaved off.

Donut Plains 1 (1)

We fly into some blocks and gain 1 frame. When grabbing the feather, we can indeed get two more subpixels than the movie, but we would obtain no frames. This level, sw4, big boo fight and bowser fight demonstrate the "rise cancel" glitch and its variants.

Donut Secret 1 (1)

There is no change except in the extra room, where we get flight speed 51 and swoop after catching the shell.

Donut Secret House (5)

In the first room, we save 1 frame by optimizing the way to get through the stairs. In the second room, we fly in turning blocks and add a corner-boost after getting the P-switch; 4 frames saved. The regulation of score restricts mario's action a lot in big boo fight, where I instead make some tetris pieaces. I believe I did well.

Star World 1 (9)

New smashola route due to ISM. If the number of coins were less than 10, we could shave off 2 more frames of fadeout lag.

Star World 2 (1)

We optimize the x speed oscillation just before grabbing the small yoshi.

Star World 3 (5)

New strategy to hit the key box shaves off 5 frames. By using also a grab block (dark blue one) we can hit the key box 1 frame faster than using only the gray P-switch. I think this phenomenon has to do something with their sprite IDs, but I'm not sure.

Star World 4 (1)

The only special thing we do is to fly into a few blocks.

Front Door (55)

I tested various ideas to destroy room #5, and I managed to squeeze under two spikes farther. To get invincibility and flight at the same time, we snag the spike just before the takeoff meter vanishes. Before entering the door to room #2, if the cape spin would have good timing, the ceiling-boost trick might shave off 1 frame.

Bowser (-7)

I found a way to stomp a mechakoopa 3 frames faster than before, but unfortunately, all of this advantage seems to be thrown away because of some frame rule, except in the third phase. Moreover, because we aim firstly for defeating bowser as soon as possible and next for stopping the input, we lose 7 frames in bowser fight as a result. If we would aim for the fastest way to end input, the movie could be ended in 37298 frames.
The mechanism of the above method is as follows: when touching a sprite, its hitbox vanishes for some frames (this value is individual for each sprite; the memory addresses 7E154C-7E1557 are the timers). For the bowser case, its hitbox vanishes for 32 frames, so we can stomp a mechakoopa during the while, without damaged.

Suggestive screenshots

5997, 19513, 29725.

Nach: Accepting this lovely Tetris homage, as a nice unexpected improvement to an existing run.


Active player (437)
Joined: 4/21/2004
Posts: 3517
Location: Stockholm, Sweden
I also would like to thank you two for making this cool run. I really liked how you handled Bowser. Clear yes vote.
Nitrogenesis wrote:
Guys I come from the DidyKnogRacist communite, and you are all wrong, tihs is the run of the mileniun and everyone who says otherwise dosnt know any bater! I found this run vary ease to masturbate too!!!! Don't fuck with me, I know this game so that mean I'm always right!StupedfackincommunityTASVideoz!!!!!!
Arc wrote:
I enjoyed this movie in which hands firmly gripping a shaft lead to balls deep in multiple holes.
natt wrote:
I don't want to get involved in this discussion, but as a point of fact C# is literally the first goddamn thing on that fucking page you linked did you even fucking read it
Cooljay wrote:
Mayor Haggar and Cody are such nice people for the community. Metro City's hospitals reached an all time new record of incoming patients due to their great efforts :P
Experienced player (702)
Joined: 2/19/2006
Posts: 742
Location: Quincy, MA
This was incredible. I love the new yoshi trick, completely unexpected (just what I like) :). It's easy to see this run's optimization is insane. :) Yes vote... as if I could vote otherwise. ;)
Super Mario Bros. console speedrunner - Andrew Gardikis
Skilled player (1444)
Joined: 7/15/2007
Posts: 1468
Location: Sweden
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core. Anyway easy yes vote. This big of an improvement was a real surprise, and YI3 was very cool. Entertainment-wise it is on the same level as the old run, it was worse in some places but better in other places (Big Boo was the best of any run)
Agare Bagare Kopparslagare
Joined: 5/15/2006
Posts: 102
Wow, maybe I should say that this is a Christmas gift to me, haha :) That was just absolutely amazing...4.5 seconds cut off one of the "most perfect" runs I've ever came across. I do miss the "input songs" but that YI3 glitch easily made up for that! Congratulations! And an obvious Yes vote from me.
Sir_VG
He/Him
Player (40)
Joined: 10/9/2004
Posts: 1913
Location: Floating Tower
Cpadolf wrote:
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core.
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt. I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level. Voting YES. BTW, whoever publishes this should make a note about this in the publication, or somebody should edit the SMV to disable that option, as long as it doesn't desync the run.
Taking over the world, one game at a time. Currently TASing: Nothing
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Sir VG wrote:
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt.
It has Hyperthreading, it basically treats one CPU as two (one physical and one virtual, which from e.g. XP's standpoint is the same for all purposes). You can set core affinity with this as well.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Player (118)
Joined: 5/13/2009
Posts: 700
Location: suffern, ny
awesome! yes vote!
[19:16] <scrimpy> silly portuguese [19:16] <scrimpy> it's like spanish, only less cool
Publisher
Joined: 4/23/2009
Posts: 1283
Sir VG wrote:
Cpadolf wrote:
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core.
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt. I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level. Voting YES. BTW, whoever publishes this should make a note about this in the publication, or somebody should edit the SMV to disable that option, as long as it doesn't desync the run.
I don't think this is the right solution. IMO the better way is just set the affinity to one CPU.
Joined: 11/11/2006
Posts: 1235
Location: United Kingdom
Aktan wrote:
Sir VG wrote:
Cpadolf wrote:
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core.
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt. I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level. Voting YES. BTW, whoever publishes this should make a note about this in the publication, or somebody should edit the SMV to disable that option, as long as it doesn't desync the run.
I don't think this is the right solution. IMO the better way is just set the affinity to one CPU.
The issue doesn't just involve multi-core users. Look above. Someone with an Intel Atom processor has the same problem, and that's single core.
<adelikat> I am annoyed at my irc statements ending up in forums & sigs
Publisher
Joined: 4/23/2009
Posts: 1283
Raiscan wrote:
Aktan wrote:
Sir VG wrote:
Cpadolf wrote:
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core.
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt. I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level. Voting YES. BTW, whoever publishes this should make a note about this in the publication, or somebody should edit the SMV to disable that option, as long as it doesn't desync the run.
I don't think this is the right solution. IMO the better way is just set the affinity to one CPU.
The issue doesn't just involve multi-core users. Look above. Someone with an Intel Atom processor has the same problem, and that's single core.
moozooh pointed out there is hyper-threading, so not exactly.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
moozooh also wants to point out that he doesn't approve of quote tunnels.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Experienced player (702)
Joined: 2/19/2006
Posts: 742
Location: Quincy, MA
Sir VG wrote:
I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level.
This actually is the fastest method for those levels, not a gameplay style choice persay. Just in case you were uninformed.
Super Mario Bros. console speedrunner - Andrew Gardikis
Active player (315)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
Aktan wrote:
Raiscan wrote:
Aktan wrote:
Sir VG wrote:
Cpadolf wrote:
Baxter wrote:
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode
Same for me... playing this smv completely messes up my snes9x :S
Turn of "Sync Samples With Sound CPU", that might fix it. My emulator crashes if I have it on as well, I think it happens if you have a CPU with more than one core.
That worked for me. It doesn't have to deal with CPU Cores, unless the Intel ATOM has more then one core, which I doubt. I loved the boo fight the most. Nice alternate gaming reference at the end! Only thing I didn't like was the water level twitching, but at least it was only 2 levels...and not every single level. Voting YES. BTW, whoever publishes this should make a note about this in the publication, or somebody should edit the SMV to disable that option, as long as it doesn't desync the run.
I don't think this is the right solution. IMO the better way is just set the affinity to one CPU.
The issue doesn't just involve multi-core users. Look above. Someone with an Intel Atom processor has the same problem, and that's single core.
moozooh pointed out there is hyper-threading, so not exactly.
Yeah cool run. That dinosaur coin glitch is awesome.
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Former player
Joined: 4/6/2006
Posts: 462
I thought my emulator had desynchronized after watching Mario stop to fetch Yoshi, but witnessing the originality of the second level was very refreshing. I've always disliked watching this level in a TAS mainly because the player's actions are always obscured during the latter half of the stage. I join AngerFist in saying that the Bowser fight was very entertaining, despite there not being a lot to do, to say nothing of how many iterations of that battle we've already seen.
gocha
Any
Emulator Coder, Former player
Joined: 6/21/2006
Posts: 401
Location: Japan, Nagoya
You've made tetriminos at the finish of Big Boo, right? That made me smile ;)
I am usually available on Discord server or Twitter.
Joined: 4/3/2005
Posts: 575
Location: Spain
I enjoyed the Bowser and underwater levels, and the glitch, but I don't like the current Mistery House nor the lack of some stunts that were present in the previous runs. I'll vote meh.
No.
Former player
Joined: 8/1/2004
Posts: 2687
Location: Seattle, WA
Cool glitch, good improvement. It sucks that so much time had to be spent in order to save that much time, but it's all good in the long run. At least this will shave lots of time off of any 100% rusn (presumably). Yes vote.
hi nitrodon streamline: cyn-chine
Editor, Active player (476)
Joined: 5/23/2006
Posts: 361
Location: Washington, United States
The thing I liked most about this run is how often you glitched through corners just to show off! I remember back when that glitch hadn't been discovered yet - among other things, it really sets this version of the TAS apart from those before it. I'm very impressed and happy to give this a yes vote.
Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Here is a comparison of this run with its predecessors. They are again resynced at each room to avoid some of them lagging too far behind for comparison to be possible, but I will encode a version without that resyncing later. http://www.youtube.com/watch?v=yEJhrU1EAhk Edit: The quality will hopefully improve as youtube has more time to process it. Edit2: Here is the one without room resync: http://www.youtube.com/watch?v=GZtEqONzuwk Not as informative as the video above, in my opinion, but still interesting.
Joined: 5/29/2004
Posts: 757
Wow! This is one of the easiest Yes votes in a long time! Entertaining, energetic and WTF with the YI3 glitch! [Can it be replicated on a console easily...?] Absolutely incredible to see how far this has come in the past few years! Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Joined: 4/3/2006
Posts: 269
Wow! Just an amazing TAS! Second stage is just unexpected... I was asking myself: What was he doing? Was it a desync that Mario is just dumping around and duplicating blocks? .... a few moments later, the "WTF moment" occurred and I was speechless. :-) The Big Boo fight was nice, for a moment, I thought Mario was playing Slidoban (a Sokboan variant in which the player slides the blocks). Final boss fight's opening was very creative. Through out the run, whenever I see Mario flys, it makes think he's Superman -- flying seems to effortless and so fun to watch. Thank you ISM & Mister for the very entertaining run! A big YES vote from me. BTW, is the 96-exit run in the works ? (can't wait to watch that one)
Joined: 4/3/2006
Posts: 269
Mitjitsu wrote:
How come every time I try to watch this on Snes9x the emu crashes? I was able to watch it thanks to the encode and I was surprised how obvious the improvements were, and Donut Plains 1 was significantly improved in terms of watchabilty. Compared to all the previous runs.
I had the same problem before. If you delete the cfg file ("snes9x*.cfg") and re-run the emulator, you should be ok. At least that's what I did and it works fine ever since.
Joined: 5/29/2004
Posts: 757
minglw wrote:
BTW, is the 96-exit run in the works ? (can't wait to watch that one)
I second this! Definitely can't wait to see how this translates in a 96 exit Blitzkrieg! Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Where is my "Hell Yes"-button when I need it?
Active player (304)
Joined: 8/8/2005
Posts: 296
Location: NSW, Australia
Wow, this run was amazing. I don't think I've ever watched a SMW TAS before so I was impressed by quite a number of things that may not have been surprises to everyone else, such as the constant stream of mushrooms in the Bowser fight. Definite Yes vote!