Mari0 is a PC game created by stabyourself.net in 2012 that combines the classic Super Mario Bros with the puzzle-platfomer Portal by giving Mario a portal gun. The game launched with 2 "mappacks", with the one most people played being the Super Mario Bros mappack containing the original set of levels. This TAS instead showcases the other mappack which features 18 Portal-inspired puzzles spread across 9 different levels.
Game Objectives
- Aims to complete the Portal mappack as fast as possible
- Abuses programming bugs and oversights
- Genres: Puzzle, Platform
- Emulator: libTAS 1.3.1
Main Tricks
Portal Loops
When Mario falls into a portal, his speed is retained when exiting the other portal. If these portals are parallel, then Mario can fall through one portal to the other and build up a Y-speed of 100 tiles per second. This trick requires several portal-able surfaces, and when those are available, we use portal loops for...
Clipping
Entities in Mari0 only check for collision every frame. This means that if you have the right speed and the right coordinates, you can clip through many objects or walls. Mario's terminal velocity often works perfectly for clipping through slim objects, such as doors or enemies, and can also clip Mario into blocks.
1-1
The first instance of object clipping is already seen in the first level, where Mario is given an opportunity to create a portal cycle. He uses this and a specific coordinate when exiting the portal to phase through 3 doors in a row, skipping both puzzles and completing the level.
1-2
Instead of using the lightbridge to get up to the cube, Mario flings himself into it using the portal-able elevator tiles to build up falling speed.
1-3
Mario encounters his first set of randomness in the form of gel. This gel doesn't cost any time though, as the puzzle afterwards runs on a timer, forcing Mario to wait.
1-4
In this game, emancipation grills remove portals and are supposed to remove other objects, such as cubes. However, we can instead use Mario's long grabbing range to place the cube next to the grill, then grab it from below so the cube never touches the grill.
Next, we use our second portal cycle to clip into a wall. We then have Mario look left, both to grab the cube and to make the game push him to the right. This clip lets us skip the emancipation grill, thus keeping the cube which we use to avoid the slow movement and random gel from the next puzzle.
2-1
The random gel makes one last appearance, however its randomness is easy to work around as it takes Mario time to actually swap between the gels in the first place. The second puzzle uses a simple jump out of a portal to skip the other set of blue gel.
2-2
Every good game needs an autoscroller, right? There's not much to do here besides trying to make this part entertaining to watch.
2-3
Mario skips the second puzzle of the level by using a frame-perfect portal shot, which gives him barely enough time to jump off the door before its hitbox becomes intangible.
2-4
This level is basically an autoscroller.
3-1
The final level is a fairly straight-forward one. Mario simply grabs the cube earlier than intended to skip the final puzzle. The last input is done several frames before touching the flagpole as it gives Mario enough speed to hit the pole as early as possible and complete the game.
Special Thanks
- Maurice for porting his game to LÖVE 11.1 when asked for better libTAS support
- dwangoAC for making me aware of libTAS and inspiring me to create this
- kilaye for quickly fixing libTAS issues
This TAS was created in Arch Linux (with linux kernel 4.18.7), and tested on Ubuntu 18.04 (kernel 4.15) to comply with the allowed distributions rule. Mari0 installation steps for Ubuntu can be found in the movie's annotations.