Mario Forever: Community Edition v2.1.3 - Any% (warps) TAS (Tool-Assisted Speedrun) by OmerAras55 (me)
Obseletes this TAS made in version v2.0.2
Tags:
- Uses warps
- Takes intentional damage
VERY Important Note: The rerecord count should be 21840. Because during the production of this TAS, I restarted the TAS from scratch a total of 5 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 21840.
Note 2: 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: "Making this TAS was much harder than I thought it was going to be."
Table of contents
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 we 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.
Q: The name of the .ltm file is "Mario Forever Community Edition v2.1.2 Warps.ltm" but the game version is v2.1.3.
A: Yeah, I know. I started working on this TAS in v2.0.2, and I had to restart the TAS from scratch many times. The reason was either finding improvements early on in the TAS or a new version being released. The last time I was developing this TAS in v2.1.2, v2.1.3 came out. But contrary to my fears, it synced perfectly. And I forgot to rename the TAS to "Mario Forever Community Edition v2.1.3 Warps.ltm."
General Info
Game version: 2.0.2 (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.3333...
RTA timing: 7:43.9583333...
TAS Movie frame count: 34656
RTA frame count: 33405
Improvements Over Old TAS (-4.316666 seconds)
This huge time saving 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 determined 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, try 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.
Menu
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)
- Gameplay
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. 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 level:
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's a faster run tactic I didn't mention here, but it only moved Luigi a tiny bit further to the right (like 0.02 units), so that didn't work either.
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.
I don't think it can get any faster than this. Luigi's position is so precise. Here, I 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 Thwomps 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. 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 stop 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 (-42f)
I want to draw attention to the spot in the image below. In the section immediately before this, I stomped Paratroopa twice and used the Super-Jump Bug to climb up extremely quickly. I don't want to explain this in detail; those who are interested can read level 5-2 in the explanations of my Warpless TAS. 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.
8-4 (-126f)
Pre Bowser Fight
I couldn't save a frame in this auto-scroll section. I don't really want to explain this part, just like in 8-2, because you'll have more fun if you watch it yourself.
Bowser Fight (-126f)
Most of this saved time is thanks to Bowser having one less bar. Aside from that, a few lost frames were saved by switching to 72 FPS.