Submission #10186: OmerAras55's Linux Mario Forever: Community Edition "warps" in 08:01.333

Linux
Mario Forever: Community Edition
warps
libTAS 1.4.6
34656
72
7417
PowerOn
Mario Forever Community Edition.x86_64
2.1.3
10321f61213772fe26f6cdf051bef28e
Submitted by OmerAras55 on 2/2/2026 5:52 AM
Submission Comments
I optimized this TAS with 12 frames (2+5+5). I request that the old file be replaced with this one: UserFiles/Info/639089464804657870

Mario Forever: Community Edition v2.1.3 - Warps TAS (Tool-Assisted Speedrun) in 8:01.166 by OmerAras55 (me)
Obsoletes this published TAS made by me in version 2.0.2.

Tags:
  • Uses warps
  • Takes intentional damage

VERY Important Note: The rerecord count should be 30781. Because during the production of this TAS, I restarted the TAS from scratch a total of 6 times. And each time I started, except for one, I created a new .ltm file from scratch. The total rerecord counts for all of them add up to 30781.
VERY Important Note 2: For sync, the "Prevent writing to disk" option in the libTAS settings must be disabled. Additionally, when the game launches, it creates a save file named "MeteoDream" in the \Ubuntu\home\user\.local\share directory. If the game has been launched previously, you must delete the save file before launching the game again for sync to work.
Note 3: In some places I'll be talking about Luigi, and unless I specify otherwise, everything I say applies to Mario as well. I don't want to have to put it in parentheses every time and write "applies to Mario as well."

A quote from me: "This TAS might be the greatest achievement of my life... and it probably is."


Important Q&A

Q: Why is this TAS 72 FPS?
A: Let me explain it this way: At the start of the game, I set the game to x1.2 speed. This allows the game, which normally runs at 60 FPS, to start running at 72 FPS (60×1.2). The old TASs had many issues because they were at x1.2 speed but still at 60 FPS. 1: Dead frames were occurring, making some sections very difficult to pass through, and some even impossible. Thanks to 72 FPS, we can do everything that could be done at x1.0 speed at 60 FPS at x1.2 speed. 2: The IL timer sometimes counted incorrectly due to frame skipping. 3: Sometimes, levels would cause us to finish the level 1 frame late due to this IL timer skipping, but this issue was fixed when I switched to 72 FPS.

Q: Why don't you take the coins you can get in some places or stomp the enemies you can stomp?
A: Mostly because of corner corrections. If Luigi jumps correctly toward the bottom-right corner of a block, the block will push Luigi slightly to the right. Unfortunately, this doesn't happen in every case, so I intentionally don't do it in some places. The other part is, for example, not killing Hammer Bros. on purpose for fun, like in 8-2.

General Info

Game version: 2.1.3 (Linux version)
TAS Tool: libTAS v1.4.6
OS: Ubuntu 24.04.2 LTS

Hashes

MD5

File name: Mario Forever Community Edition.x86_64
10321f61213772fe26f6cdf051bef28e

SHA-1

File name: Mario Forever Community Edition.x86_64
9dfa2d9934ef67011156e777eeb647246341b383

SHA-256

File name: Mario Forever Community Edition.x86_64
820f3fec74869f088dc4509737a5d30a8b54208a75d148ec26da9e0e839d9d9a

LibTAS Settings

Runtime Settings

  • General
    • Force locale: "English"
    • Prevent writing to disk: "Off"
    • Virtual Steam client: "Off"
    • Allow downloading missing libraries: "On"
  • Savestates
    • Incremental savestates: "Off"
    • Store savestates in RAM: "Off"
    • Compressed savestates: "On"
    • Skip unmapped pages: "Off"
    • Fork to save states: "Off"
  • Timing
    • time(): "Off"
    • gettimeofday(): "Off"
    • clock(): "Off"
    • clock_gettime() realtime: "Off"
    • clock_gettime() monotonic: "Off"
    • SDL_GetTicks(): "Off"
    • SDL_GetPerformanceCounter(): "Off"
    • GetTickCount(): "Off"
    • GetTickCount64(): "Off"
    • Query PerformanceCounter(): "Off"
    • Wait timeout: "Native waits"
    • Sleep handling: "Advance time on main thread"
  • Asynchronous events
    • jsdev: "Off"
    • XEvents at frame beginning: "Off"
    • SDL events at frame beginning: "Off"
    • evdev: "Off"
    • XEvents at frame end: "Off"
    • SDL events at frame end: "Off"

Movie Settings

  • Inputs
    • Mouse support: "Yes"
    • Warp mouse to center: "Off"
    • Prevent mouse warping: "Off"
    • Joystick support: "None"
  • Time
    • Framerate numerator: "72"
    • Framerate denominator: "1"
    • Auto-restart: "No"
    • Initial elapsed time seconds: "1"
    • Initial elapsed time nanoseconds: "0"
    • Initial system time seconds: "1"
    • Initial system time nanoseconds: "0"
  • Time tracking
    • time: "-1"
    • gettimeofday: "-1"
    • clock: "-1"
    • clock_gettime_real: "-1"
    • clock_gettime_monotic: "-1"
    • sdl_getticks: "-1"
    • sdl_getperformance counter: "-1"
    • GetTickCount: "-1"
    • GetTickCount64: "-1"
    • QueryPerformanceCounter: "-1"

Comment-Line Options

-- --speedrun-stats
Note: I would appreciate it if the "Command-Line" field is left blank during encoding.

Timing and Frame Counts

TAS timing: 8:01.166666...
RTA timing: 7:43.79166666...
TAS movie frame count: 34644
RTA frame count: 33393

Improvements Over Old TAS (-4.4833333 seconds)

This huge time save is possible thanks to the following: much better optimization, better route selection, selecting Modern game mode at the start of the game, corner corrections, Bowser having 1 less health bar in 8-4, switching to 72 FPS and other minor things I'll mention later. Unfortunately, I can't show the time saved in frames because TAS's FPS has changed compared to the old TAS. The amount of frames saved in the Level-by-Level Commentary I'll explain shortly is based on the IL frame counter compared to the old TAS.

Run Goals and Route

The goal is to complete Mario Forever: Community Edition v2.1.3 as fast as possible using warps to skip worlds and minimize stage count. During this process, I tried to get as many points as possible for fun. TAS timer stars on frame 0 and RTA timer starts when pressing jump to begin World 1, both ends upon Bowser's defeat in 8-4. Although the game contains 32 main levels, this run plays only 9 levels, using warp pipes.
These warps:
1-4 → 3-1
3-1 → 8-1
Note: The "Mushroom Plague pipe skip" in 1-1 does not count as a warp.

Full-Run Commentary

Selecting Game Style

A few seconds after the game opened, I immediately selected Modern game mode. This saves 1 frame at 72 FPS compared to Classic game mode.
Before entering save game room and 1-1, I changed some settings in the menu:
  • Options
    • Game Speed: 1x → 1.2x
    • XScroll: Off → On (needed for 8-1 strat)
  • Tweaks
    • Gameplay
      • Super jump bug: Disabled → Enabled (needed for 8-3 strat)
    • Character: Mario → Luigi (I will explain why.)
    • Aesthetic
      • Replace circle transitions with crossfades: Disabled → Enabled (For faster transitions)
      • Blur transitions between pipe warp areas: Enabled → Disabled (For faster transitions again)
    • Miscellaneous
      • F3 keybind to save game room: Disabled → Enabled (For reaching the save game room faster)
And immediately after that, I returned to the main menu for 1 frame so that the tweak changes I made would be saved. In the next frame, I pressed the F3 key and immediately accessed Save Game Room.

Save Game Room

First of all, I want to say this. I discovered a lot of things while making this TAS, and we're encountering one of them here: Fast acceleration. The image below shows the first frame after exiting the pipe. The X speed is written in the top right corner. Normally, Luigi starts accelerating at 50.00 X speed, but here it says 54.17 in the top right corner. This happens by pressing the Left+Right button combination in the frame just before exiting the pipe. Left+Right only allows Luigi to start moving a tiny bit faster in the first frame.
And immediately afterwards, I used the corner corrections you can see in the images below so that I could go get the Red Lui power-up earlier.
And then, I took the power-up for Red Lui on the far right. Those who have played the original game may remember that this power-up was green. And they're right. This is a power-up exclusive to the Luigi character in Mario Forever: Community Edition. It's exactly the same as Green-Lui, the only difference being that Luigi is faster with this power-up. Luigi's max X speed increases from 350 to 400.
After getting the Red Lui power-up, I entered the nearest pipe (3rd one) and went into 1-1.

Level-by-Level Commentary

1-1

This is the only level where I didn't save time compared to the old TAS. The L+R tactic doesn't work on this level. Let me explain: There's an invisible pipe on the left side of where we start the level. This is known as the Mushroom Plague pipe skip. Unfortunately, when I try to accelerate quickly with L+R at the start of the level, Luigi starts moving to the right because he's facing that direction. That's why we can't save time here. And unfortunately, we can't do L+R when we exit the pipe and go to the end of the level either. Because Luigi entered the pipe facing left, he exits the pipe facing left. But we wanted Luigi to go right. It's the same situation I just described. That's why L+R doesn't save us any time. The sliding finish tactic at the end of the level is purely for fun, it doesn't save or lose any time. Actually, in the version before this one, if you pressed L+R at the level finish line, Luigi would come back after a while, but unfortunately it has been patched.

1-2 (-2f)

I wrote this in the old TAS:
I'm 99.999% sure there's no room for improvement in this level because I'm constantly running to the right until the level ends. Nothing really surprising here.
Well, thanks to fast acceleration and corner corrections, I saved not one but two frames compared to the old TAS. I'd like to briefly mention the following about this part below:
Passing through Goomba. The reason I found this was that while making the TAS, I finished the level at 1158 frames, but I was trying to finish it at 1157 frames. As you can see, corner correction can be done on the block where this Goomba falls. And after hours of trying, I found this and was able to finish the level at 1157 frames for the first time. But later, I discovered the fast acceleration technique at the start of the levels, and because of this corner correction and Luigi's alignment, it no longer worked, and there was no need for me to use this block for frame 1157. But still, passing through Goomba like this is funny.

1-3 (-2f)

There's not much to say about this level because it's the same as 1-2. I started the level with a fast acceleration and did corner correction many times to be further to the right. But look at the image below. This frame is the one right before the level ends, and look at the third number from the bottom on the right: 9425.41. This is Luigi's X position. The level finish line is at 9426. So if Luigi had been 0.59 units further to the right, he would have finished the level one frame earlier. But I tried everything. I tried dozens of possibilities and ideas, but none of them allowed me to finish the level one frame earlier. There is a tiny bit faster running tactic that I haven't mentioned here, but its effect is microscopic, so it didn't work either (the best X position I could achieve was 9425.59, which allowed Luigi to be only 0.18 units further to the right).

1-4 (-16f)

There's not much to say at this level either. I used fast acceleration and corner corrections again. The image below is the result of hours of optimization work. Here, I need to go up because there's a warp pipe leading to 3-1 above this level.
The majority of this time save was the result of the crouch jumping tweak being enabled. And I don't think it can get any faster than this. Luigi's position is so precise. Here, I crouch jumped to the end of the block in an extremely optimized way and ran to the right for a while to enter the warp pipe that led me to 3-1.

3-1 (-2f)

The only way to save time at this level is thanks to corner corrections. As you can see in the image below, when we try to enter from the left side of this pipe, we can enter the warp pipe that leads to 8-1.

8-1 (-102f)

When I was making the old TAS, I knew that 8-1 could be improved, but not by this much. Although at this level, 100 out of 102 frames were saved thanks to a glitch I found completely by chance in the warpless TAS. The other two were saved with better movement in this TAS. But before I explain those, I want to describe what could be one of the most iconic moments in this TAS, as you can see in the image below: Jumping in the air.
As you can see in the image below, when Luigi crouches down in the space between these blocks, we release the crouch button and start moving downward. But as you may have noticed, Luigi isn't in a falling animation. While Luigi is moving downward, we try to move him toward that block so he can move downward for longer without entering the falling animation.
I have no idea why this works.
And I spent days trying to optimize this part below. As you can see in the image, my goal is to make Luigi jump to the center block of the Roto Discs on the right side without slowing down too much and without touching the Thwomp or Roto Discs.
This really took me days because in almost all of my previous attempts, Luigi would fall between the center block of the Roto Discs and the blocks immediately to its left, which was ridiculous. But eventually, I found better movement and got through this part with almost no slowdown compared to the old TAS. And immediately after that, I used corner correction from the block above the one Luigi landed on to go further to the right.
And in the next section, I passed the part with Thwomps without needing a moving platform just like I did in the old TAS. This is possible thanks to the tiles at the bottom, aligned with the Thwomps, which prevent the Thwomps from falling forever. And most of the time saved at this level comes now: crouching down to fall to the far right corner of the block under the last Thwomp.
Here's how it works: This game has Coyote-Time, enabled by default. This gives you a few frames to jump when you fall off a platform. If you crouch and fall onto the far right corner of a block, a glitch in the game allows you to walk in midair for 1 extra frame before falling. This allows us to barely finish the level by stomping a Bullet Bill fired from the right without stopping. In the old TAS, not knowing about this extra 1-frame bug caused me to wait 1-2 seconds for the Bullet Bill to be fired.

8-2 (-1f)

Yes, this is the auto-scroll level. I don't want to explain this level too much because it's better if you watch it yourself, and also the level is very long, so if I explain it, it will never end. And I managed to optimize it by 1 more frame. It's the same tactic as before: when the finish line approaches, run towards it. If we wait on the right side instead, Luigi ends up further left than he should be. We can prevent this as I explained earlier. And with better movement, I saved 1 more frame. Note: Those who watched the Warpless TAS may recall that I finished the level with an IL timer of 8097. This means I actually lost time on this level compared to the Warpless TAS, right? No. Let me explain: The Warpless TAS was at 60 FPS, and as I mentioned at the beginning, when the game is at 60 FPS, the IL timer can temporarily show 1 frame more or less than it normally should in some frames. This was one of the reasons I switched to 72 FPS. So, in short, I actually finished this level at 8098 frames in the Warpless TAS, not 8097 frames. If you want more proof: I finished the level in both the Warpless TAS and the Warps TAS in the frame immediately before the game's own level timer reached 90. If you'd like, you can replay my Warpless TAS and check for yourself.

8-3 (-53f)

Main optimization & routing

The moment shown in the image below is made possible by the Super Jump Bug. The Super Jump Bug (SJB) works like this: If Luigi lands after jumping but continues to hold down the jump button, and during this time he stomps an enemy without jumping, it triggers the bug. As long as the jump button is held down, Luigi actually builds up Y speed even if he doesn't jump. That is, until Luigi tries to fall off the platform he's standing on. After stomping the enemy, the longer you wait while holding down the jump button (Z button), the higher Luigi jumps when he tries to fall off the platform. As I said, you need to keep the jump button pressed throughout the process. This bug is a feature intentionally added to the game, because it exists in orijinal Mario Forever.
And I also want to draw attention to the moment in the image below. In this frame, the old tactic was to hit Luigi's head against the piles above and then fall onto the platform to continue. But I realized this was wasting time. Instead, by releasing the jump button early, I not only reach the upper-right platform in a more optimized way but also ensure that the Spiny in the next image spawns later and in a much better position. This way, I can continue through the level without wasting any time.
There are a few minor improvements again, but since I reached the area with the moving platforms at the very end too early, and as a result the platforms ended up in a worse position, I had to sacrifice 1 frame by jumping onto this platform.

Late 2-frame Optimization

Actually, I initially saved 42 frames at 8-3, but 19 days after completing the TAS, I found a 1-frame optimization. You can see this part below. Yes, this RTA strat is faster, but only when using the L+R quick turn strategy.
And also, about 15 minutes after saving the time here, I managed to save 1 frame at the moment shown in the image below, even though it wasn't in the plan. I was actually wondering if 1 frame could be saved in this section, even during the process of making this late TAS, but no matter how hard I tried, I couldn't manage to save 1 frame. But now, when I tried again, it worked. As a result, the number of frames I saved later became 2, and the total number of frames I saved in the 8-3 became 44.

Another Late 5-frame Optimization

Yes, 11 days after recovering 2 frames, I managed to recover 5 more frames, bringing the total number of frames saved later to 7. I will show you where I saved the time.
1 frame saved here with better movement:
2 frame saved here with Luigi landing 2 frames early:
1 frame saved here. I want to mention something here. When Luigi jumps while moving in the direction he is facing, he reaches the maximum possible height. But the only way to do this is not by moving in the direction Luigi is facing; it is also possible using the L+R jump. This greatly reduces Luigi's horizontal speed, allowing him to reach the highest point in the fastest time without moving away from the platforms. This L+R jump tactic only works in this specific part of the level, at least based on my testing. This also saved 1 more frame:
And also here, by jumping 4 frames instead of 5 frames, I saved 1 more frame here:

Yet Another Late 4-frame Optimization

Yes, in 8-3, like 2 hours later I managed to save 4 more frames later on, bringing the total number of frames saved in 8-3 later to 11. As you can see in the image below, 3 of these frames were saved because instead of going up the right side -which was the intended path- I landed on the Fire Flower block on the left and then barely managed to jump to the right. This was an oversight on my part. Actually, while running to the left here, I start accelerating at a little bit slower speed (50.00 instead of 54.17). The reason for this is that the L+R fast acceleration tactic I mentioned earlier causes Luigi to accelerate slightly faster to the right instead of to the left. The reason for this is that Luigi starts the level facing right; if he were facing left instead, the L+R tactic would work. Aside from that, I intentionally hit the top-right corner of the Fire Flower block to reset my speed to zero and move one frame to the left to get on top of the block, because that's the fastest way. Then I move to the right and barely make it to the top-right spot, as I mentioned.
As you can see in the image below, I jumped one frame earlier and continued jumping intermittently in the air, landing on the block one frame earlier. Note: For Luigi to get onto the block without losing speed, his Y velocity must not be negative (i.e. he must not be moving upward). If Luigi hits the block while his speed is negative, he stops immediately, and you might think of jumping over the side of the block, but even if Luigi jumps while crouching, his head will still hit the block above. That's why jumping one frame earlier saves time.
Besides that, I actually saved 1 more frame in the section below. Since I arrived at this section earlier than in the old TAS, the moving platform is in a better position, which prevents me from slowing down a bit further ahead. Although my speed does drop slightly because the platform is moving to the right, this loss of speed isn't bad enough to cause me to lose frame. In short, I saved 1 more frame in the section below as well.
But I wish things were that simple. Unfortunately, since I reached the section below 5 frames earlier than in the old TAS, the positions of these moving stone platforms got even worse. It was already bad, and now it's even worse. So, I had to sacrifice the 1 frame that I saved earlier by jumping 1 frame later than the platform in the section below. I tried everything I could, but I wasn't even close to saving the frame that I sacrificed.

8-4 (-127f)

Pre Bowser Fight (-1f)

At first, I couldn’t save a frame during the pre-Bowser fight, but later I figured out how to save one frame. I'll explain it in a moment but first I want to point out this part: The reason Hammer Bro. dies twice in the image below is that Hammer Bro. dies in two ways at the same time. One is by being stomped by Luigi, and the other is by being hit by Koopa.
The single frame I saved was made possible by entering the pipe leading to the Bowser Fight one frame early.
It looks simple, doesn't it? Well, not at all. First, let me address some questions you might have: Couldn't Luigi run into the pipe even faster, like he did at the end of 8-2? It's a good idea, but unfortunately, no. Entering the pipe early in 8-4 works differently than the level finish line in 8-2. First of all, if Luigi wants to enter the pipe, he needs to be in a position where he can enter it. That part is fine, but Luigi can't enter the pipe at the very first point where he makes contact with it. In the next frame, Luigi must also be in an X position where entering the pipe is possible, a position where he can enter the pipe a second time. In other words, Luigi must make contact with the pipe for two consecutive frames to be able to enter it. Unfortunately, this prevents Luigi from entering the pipe without losing any speed to the right the moment the pipe starts appearing on the right side. Because even if Luigi meets the entry condition in the first frame, he makes contact with the right side of the screen, which instantly reduces Luigi's speed to 50.00 and causes the game to push him slightly to the left. So even if the first-frame condition is met, the second-frame condition cannot be met with this tactic. But how did I manage to enter the pipe 1 frame early if, in my previous TAS, depending on Luigi's position as the pipe began to appear, I could sometimes enter the pipe even 1 frame later than in the old TAS? (In short, even the frame I entered the pipe in the old TAS could sometimes cause me to enter the pipe 1 frame later due to a slightly poor X position.)
This was the question I've been thinking about since Warps V3.
I found the solution: the EXTREMELY precise X position. As you may have noticed, I waited for a moment at a specific spot on the blocks on the left before entering the pipe, as you can see in the image below.
This spot is "VERY, VERY" specific; based on my observations, Luigi's X position can vary by a maximum of 0.03 units from this exact spot. But you might ask, "Why?" which makes sense. I'll explain the reason shortly. After that, Luigi starts running to the right and jumps a specific amount at a specific frame. He then continues running to the right and lands on a specific spot on the Bowser statue on the right. Immediately after that, he collides with the right side of the screen, bringing his speed 50.00, and in the frame he lands, he presses Right+Down. After that, he continues running and enters the pipe one frame earlier without losing speed. All of this is EXTREMELY precise. If Luigi's starting position were 0.05 to the right, even if he performed all other actions in the same frame and collided with the right side of the screen in the same frame, he still couldn't enter the pipe one frame early. The reasons for this is are after Luigi makes contact with the right side of the screen and continues running to the right, he must enter the pipe immediately after reaching his maximum possible speed of 70.83 (This maximum speed is the speed Luigi reaches before he runs to the right again after hitting the right side of the screen, and before he hits the wall again and his speed drops to 50.00). And Luigi must be in the PERFECT decimal subpixel position before entering the pipe. If both of these conditions are met, you can barely enter the pipe one frame early. I achieved this using precise subpixel positioning. I then tested hundreds of different positions and speeds, but none of them allowed me to enter the pipe one frame early, not even when the decimal parts of Luigi's X position before entering the pipe were the same.
With that, this was the last frame I saved in the TAS.

Bowser Fight (-126f)

Right before entering the Bowser Fight, I stomped some Bullet Bills in a specific way to manipulate Bowser's RNG into running towards me at the start. The Fire Flower deals the initial damage to Bowser earlier than Red Lui, just like I did in the previous TAS. After that, I deal damage to Bowser every 121 frames (@72 FPS). 121 of the 126 frames that were saved resulted in Bowser having 1 less health bar (which was a bug in older versions of the game). The other 5 lost frames were saved by switching to 72 frames.
Other than that, during the moments when Bowser throws his hammers, as shown in the image below, I did my best to dodge the hammers to avoid taking damage and make the TAS look as good as possible, just like I dodged the Hammer Bros.' hammers in 8-2 and 8-4. Except Bowser's second hammer attak, I couldn't dodge that.

Suggested Thumbnail (frame #41572)

This frame takes place after the end of the run.
(Without the commend-line options of course.)
Last Edited by OmerAras55 17 hours ago
Page History Latest diff List referrers Change Log