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.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14858
Location: 127.0.0.1
This topic is for the purpose of discussing #2494: ISM & Mister's SNES Super Mario World in 10:22.17
Experienced player (617)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I think this is the most obvious YES vote ever.
Measure once. Cut twice.
Skilled player (1885)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Wow, I don't really know what happened on YI 3, but that sure was entertaining. Big yes vote, this will get very high ratings from me.
Editor, Expert player (2312)
Joined: 5/15/2007
Posts: 3855
Location: Germany
Thank you two for making my day.
Joined: 10/28/2007
Posts: 5
Location: Japan, Tokyo
Nice run! Vote YES!!!!
Active player (353)
Joined: 1/16/2008
Posts: 358
Location: The Netherlands
Awesome :D lovely new/used glitch :D ps. massage block --> message block ;)
TASes: [URL=http://tasvideos.org/Movies-298up-Obs.html]Mr. Nutz (SNES), Young Merlin 100% (SNES), Animaniacs 100% (SNES)[/URL]
sgrunt
He/Him
Emulator Coder, Former player
Joined: 10/28/2007
Posts: 1360
Location: The dark horror in the back of your mind
Obvious yes vote. More importantly, here's an encode, and here it is on DM. EDIT: Due to several requests I'm replacing the encode; hold tight, as it'll be available shortly. EDIT2: New encode available.
Joined: 3/1/2009
Posts: 64
Thanks sgrunt, I was unable to read it with the emulator. Totaly yes for the tas, but I have juste a little remark. At the and of Yoshi's island 4, the score is exactly 40000 :)
Skilled player (1670)
Joined: 6/11/2006
Posts: 818
Location: Arboga, Sweden
Hell yes. The Big-Boo fight was the best this far.
Warp wrote:
omg lol this is so fake!!!1 the nes cant produce music like this!
Rolanmen1
He/Him
Experienced player (751)
Joined: 2/20/2009
Posts: 569
Location: Dominican Republic
Yes Vote, cool Bowser Fight.
Player (223)
Joined: 10/17/2005
Posts: 399
:) !
<adelikat> I've been quoted with worse
Experienced player (954)
Joined: 12/3/2008
Posts: 936
Location: Castle Keep
Very cool run, easy yes
Skilled player (1086)
Joined: 8/26/2006
Posts: 1139
Location: United Kingdom
This is an awesome piece of work. I can't believe how different it was from previous runs. I found myself being constantly surprised by what was going on. Voting Yes.
Joined: 2/7/2008
Posts: 185
It's the little touches that really make this movie for me - the way you have Mario doubled whilst swimming, seeming invincibility under the falling pillars, jumping on each flame when they first fall at the end and all the playing with the mushrooms. Even when not directly contributing to speed, you keep entertainment as the highest priority. Of course, it's the crazy routes and the many, many hours of research into all the possible abuse that elevates this into a tip top TAS. My favourite level was Star Road 3. I guess to fully understand it, I'd need to read up on all the abuse - I assume reading through the thread would enlighten me sufficiently? - but it's clearly a brilliant thing in any case.
I'm just some random guy. Don't let my words get you riled - I have my opinions but they're only mine.
Mitjitsu
He/Him
Banned User, Experienced player (532)
Joined: 4/24/2006
Posts: 2997
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.
Player (108)
Joined: 8/24/2006
Posts: 61
Location: Brazil
Add me to the yes poll!
AW2 v2 progress: Two-Week Test (mission 17/25)
Skilled player (1530)
Joined: 5/31/2009
Posts: 86
Location: Japan
I love this run. Vote yes.
jaysmad
Other
Experienced player (834)
Joined: 12/1/2006
Posts: 629
Location: Mom's
I just love those wtf moments.
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
There's no amazing input animation this time, but that's only a minor blemish on an awesome piece of work. The yi3 glitch is really surprising. The Big Boo fight doesn't have the same feeling of playing with death, but you still had some really cool block antics. It's great to see this run closer to perfection. Yes vote! Also, is there any chance of a 96-exit improvement?
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Joined: 5/13/2009
Posts: 141
A great improvement on my favourite TAS! I wasn't expecting the glitch in yi3 at all...incredible.
Skilled player (1402)
Joined: 5/31/2004
Posts: 1821
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 Anyway, very nice improvement... voting yes.
Publisher
Joined: 4/23/2009
Posts: 1283
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 Anyway, very nice improvement... voting yes.
I wonder if Snes9x still have the timing bug on SMP systems. I fix is to set the affinity to only 1 CPU so this doesn't happen.
Joined: 6/23/2009
Posts: 150
Wow loved the YI3 glitch there. Completely out of nowhere.
Joined: 10/24/2005
Posts: 1080
Location: San Jose
I can't believe you guys got the YI3 coin glitch to work and you were able to do it so fast. When we first heard the yoshi coin trick (a post on ISM's blog) we instantly thought that we could do it in YI3. The someone (I believe it was fabian), tried it out, and they were like, oh no, it takes too long... You guys are unbelievable!! With that speed I bet you guys can can even manage to do the trick in Vanilla Secret 2 before the clock runs out ;). The run crashed for me too at DSH, but I saw enough to vote a huge YES. Thank you for making my day!
<agill> banana banana banana terracotta pie! <Shinryuu> ho-la terracotta barba-ra anal-o~