Masterjun3
Mari0 Portal mappack in 11114 frames
updated
I thought it was about time.
tasvideos.org/7405S
I made this video to showcase the oldest release of ZSNES.
And how better to showcase a 24 year old emulator than by taking a fairly recent TAS that happens to be absolutely amazing, and completely ruin the experience by playing it on an ancient piece of software with horrendous audio emulation.
To get an idea on the time scales involved, here are some dates:
- The SNES and Super Mario World were released in November 1990.
- ZSNES 0.150 was released in October 1997.
- This TAS was submitted in February 2020.
Those more familiar with TASing might ask: How did this run even sync, was ZSNES an accurate emulator after all?
No it wasn't.
The magic lies in the robustness of SMW itself. Almost every part of every level is deterministic, and almost all relevant data is reset at the beginning of a level.
All you have to do is adjust the inputs to the lag frames that differ from run to run and from emulator to emulator. If your emulation is good enough to get to a level in the first place, you will be able to sync up pretty much any SMW run.
To make this video, ZSNES was running inside the DOSBox emulator, running inside libTAS, running on Linux inside a virtual machine on Windows.
...Maybe I shouldn't keep making these videos requiring layers upon layers.
--------
ZSNES 0.150: archive.org/details/zsnes0150
BrunoVisnadi on YouTube: youtube.com/c/BrunoVisnadi1
TAS Publication on TASVideos: http://tasvideos.org/4144M.html
The Python code has 3 major parts:
1. Converting a code string into video frames, showing the string being written with scrolling support.
This of course requires a font. The font is included in the code with the 10 lines of compressed bytes, giving a simple pixel list with the font data when uncompressed. Python list slicing was very useful for overwriting the video frame list, though not being able to use numpy made it more difficult.
2. Writing video frames into a video file.
This step was time consuming, because I didn't want to rely on external libraries. After several hours searching I found the LCL codec that uses zlib to compress video frames, and zlib is included with Python. The rest was following AVI specifications and creating code shortcuts for writing a proper file.
3. Passing its own source code to the video creation.
This is the Quine part of the video. The code reading its own file is not allowed, so it has to manually construct the source code string. This requires every part of the code to appear at least twice. With some tricks it's possible to put the string construction code into the constructed string itself, avoiding an infinite loop of converting the code into a string, then converting the code that converted the code into a string into a string, etc.
Executing the code takes roughly 40 seconds and it generates this 12.4 MB quine_video.avi file with a SHA-1 of DD9F3B3DEC4AC5D8121640454F21839DAA250F1F.
Important to note: The difficulty of solving a Rubik's Cube is highly dependent on the skill of the scrambler. If your scrambler depends on a Random Number Generator, the task becomes much easier.
For each cube, the game starts with a solved one and scrambles it by making 25 random moves. Of course, this means that a random move can just be the reverse of the previous move, or it can be repeated until it cancels itself out.
Advancing text boxes advances the RNG, so this was heavily used to create cubes solvable with minimal moves.
Interestingly, there is an existing publication on TASVideos from 11 years ago solving the cubes in 1, 20, and 71 turns. This TAS solves them in 1, 10, and 13 turns, so a bit faster.
Also, shoutouts to PictoChat.
Game: Not Tetris 2 - stabyourself.net/nottetris2
Not really a lot to TAS here, I just played around and had a bit of fun.
A new piece appears if the previous one hits the stack, so building a tower to the top makes it able to spawn pieces as fast as possible. Careful though, you lose by being too far at the top when hitting a piece.
Surely these must count as T-Spins though.
Star World 4, Vanilla Secret 2, and Yoshi's Island 3 have quickly accessible Yoshis and other elements giving a quick opportunity for a crash.
There are other levels that could make a good level, but these seemed to be the most promising.
SW4 spits a null sprite while mounting Yoshi and standing on a rotating gray platform simultaneously. This causes a non-existent sprite slot to be processed and results in a crash. The platform needs to be processed before Yoshi, so the platform needs a higher slot. It's why Yoshi needed to be recycled at the beginning.
VS2 stuns a Piranha Plant with a non-zero stun timer. Like a Koopa jumping out of a stunned Shell, here it's a wrongly indexed sprite jumping out of a Piranha Plant. This sprite with an unintended ID is attempted to be processed, and causes a crash.
YI3 similarly to SW4 spits a null sprite on a brown platform. Standing on a brown platform takes the processing far into the stack and spitting a null sprite corrupts it. It crashes when trying to return from subroutines.
Now, you might wonder why these runs don't properly reach the credits. Since these runs are just a hypothetical situations, it doesn't make much sense to work your way to the credits. Most people who worked on these kinds of runs can tell you it's basically impossible for there not to be a way from a crazy crash to the credits. However, all that work would be purely technical and for a viewer it would just look like a fade to the credits.
I also wanted to show the other side: the type of visual glitches happening when the game does not magically recover into the credits!
Yes, basically every SNES "fastest crash" run is just a few magical inputs away from the credits.
http://tasvideos.org/7071S.html
Game is DX-Ball 2.
Made with libTAS through Wine because that's magically possible somehow.
Submission: http://tasvideos.org/6964S.html
In this game mode called "T.A. Death" you immediately starts with so called 20G: Pieces fall 20 tiles per frame. The field is only 20 tiles high, so pieces immediately drop to the ground. You are left only sliding the piece into position until it locks half a second after spawning.
The goal is to reach level 999. Every piece drop and line clear gives one level. Additionally there are 6 medals you can get in bronze, silver or gold with increased difficulty.
[Medal]: [Requirement for bronze/silver/gold.]
AC (All Clear): Completely empty the field 1/2/3 times.
ST (Section Time): Complete a section (100 levels) within 52/45/42 seconds
SK (Skill): Clear a Tetris (4 line clear) 5/10/17 times.
RE (Recovery): Go from over 149 blocks to under 71 blocks 1/2/4 times.
RO (Rotation): Surpass 1.2 rotations per piece during levels 0-300/300-700/700-999
CO (Combo): Clear at least 2 lines 4/5/7 times in a row without a piece not clearing a line at all.
A Secret Grade GM can be achieved by building a ⟩ pattern (right pointing angle bracket) with holes during the credits.
This version of Tetris does not have the "hold piece" feature, which would allow you to store a piece to switch back in later. Also, the sequence of pieces depend on an RNG seeded before the start, so no manipulation is possible during the gameplay.
Full game title is:
Tetris the Absolute: The Grand Master 2 Plus
The theory behind this game is pretty simple. No matter how you slide, the total sum on the board stays the same and only increases by either 2 or 4 with the new tile. A total board sum of 2048 thus requires at least 512 tile spawns, so 510 moves (two tiles spawn at the beginning). After that, at least another 9 moves are required to combine tiles to the 2048 tile.
With impossible luck - getting only 4-tiles to spawn - the minimum
number of moves is 519.
With impossible bad luck - getting only 2-tiles to spawn - the minimum number of moves is 1032.
The only real optimization in this TAS is finding the optimal seed and making sure the final moves are positioned as to not waste a move.
For this TAS to be authentic, I had to recreate the Math.random() function of a browser, that is, of a JavaScript engine used by a browser. I decided to recreate it from the V8 engine. After that I ran a search for seed that spawned the most 4-tiles with an extra rule valuing seeds more highly when the total board sum goes from 2044 to 2048 with a 4-tile spawn.
The seed I used was 7771287229.
Of the important 874 tile spawns, I got 724 2-tiles and 150 4-tiles, which equals 82.84% and 17.16% (the game aims for 90% and 10%).
This roughly equals a 1 in 17066527652 chance.
The video shows the run twice, first at 60 moves per second, and then at 10 moves per second.
----
Game: 2048 - play2048.co
Music: Eternal Forest by Red&Green - youtu.be/ml9UFvxHBQE
I can say, this game really is fun to play around in.
Now while I'm here, let's test YouTube's new chapter feature thing!
0:00 Hello it's me
0:13 Oh no the blocks
0:44 Now we're out of blocks
1:13 Bonus content
1:29 The End
An Ubuntu 18.04.1 distribution with Linux kernel 5.3.0-26-generic with keyboard and mouse support and a US default keyboard layout was used to run libTAS v1.3.5 running a compiled release version of PCem v15_235273a emulating a Pentium OverDrive MMX 200 in a Socket 7 Shuttle HOT-557 mainboard with a S3 ViRGE/DX graphics chipset and 128 MB RAM booted using a 263725056 byte hard disk image containing Linux kernel 3.0.21-tinycore created using the Linux operating system Tiny Core Linux CorePlus version 4.7.7 installation image with additional lua typespeed ace-of-penguins xboard snes9x applications installed.
----
Fun fact: The audio was added in manually. In fact, what you hear are my own recordings of a mouse click and some key presses.
I apologize, this is not new content.
The videos I make are mainly so I can enjoy them myself. So occasionally I go back and rewatch a few. The old video was the only one I could not watch due to the frequent interruptions and long loading times, so this video was necessary.
----
Original video is now unlisted: youtu.be/zC6J8wmaTsE
http://tasvideos.org/6349S.html
Impossible tricks:
Building up any running speed (Y + →)
Flying (Y + →)
Jumping while holding an item (Y + B)
Jumping while grabbing a throw block from below (Y + B)
Jumping while ducking (B + ↓)
Jumping out of water (B + ↑)
Swimming upwards quickly in water (B + ↑)
Swimming sideways quickly in water by holding an item (Y + →)
Left: First improvement (by lexikiq and suggestions from Masterjun)
Top: This movie (by lexikiq & Masterjun): http://tasvideos.org/6113S.html
(Normal Encode with timer: youtube.com/watch?v=Z_0ybXOyhoc )
lexikiq's YouTube channel: youtube.com/channel/UCNqrdo-sFrq7zyEiBBX42dQ
Thanks to MM102 for the game version with a timer added.
Frames: 11114
Rerecords: 5554
[Mari0 in libTAS]
The route is pretty simple: Enter the 1-2 pipes before they have fully loaded. This brings you to the minus world -1. Quit and continue the game from there, bringing you to 8-4 to finish the game.
----
Portals can only be placed if there are two solid tiles next to each other. Once you shoot a portal, there is a 12 or 13 frame delay until you can shoot the next one.
Your running speed is capped at 9 tiles per second (the game runs at 60 FPS). The vertical falling speed is capped at 100 tiles per second. Using portals you can exchange X and Y speeds giving you up to 100 tiles per second horizontal speed (for reference, Mario has a speed of around 88 in 1-1).
1-2 shows a clip I found when moving left when falling into a floor portal. By positioning yourself correctly, you can clip into the ground if there is a block underneath the left block where the portal is on (which is why I couldn't clip directly through the ceiling).
----
It's quite possible there are other routes in the level which turn out to be faster. Platforming with portals is quite the interesting task with unintuitive tricks you can use.
It's why I had a lot of fun TASing this so far!
Frames: 4315
Rerecords: 2898
Movie file (.ltm): dropbox.com/s/mdqjnmiu901wq4h/mari0_masterjun.ltm?dl=1
[Mari0 in libTAS]
[Osmos Demo in libTAS]
[Mari0 in libTAS]
Btw this can go even faster gfycat.com/NimbleTatteredCrocodile
http://tasvideos.org/userfiles/info/46221611370852647
The "reset 510" is a reset delayed by 510 instructions.
Documentation: http://tasvideos.org/Masterjun/Doc/AGDQ2018.html
Movie file: http://tasvideos.org/userfiles/info/44437309086569376
[1] additionally in that frame:
18FBD8C220A99C008DBE0FA942A98DC00FA900488DC20FA9ABA98DC40FA93E8D8DC60FA91C028DC80FA9A9968DCA0FA98D1D8DCC0FA902A98DCE0FA99B8D8DD00FA9A5028DD20FA9A9648DD40FA98DA98DD60FA902A98DD80FA9D28D8DDA0FA9AD028DDC0FA9A9808DDE0FA98DD98DE00F4C8421A9028D8DE20FA9DD028DE40FA9A9668DE60FA98D158DE80FA903A98DEA0FA9568D8DEC0FA911038DEE0FA9A99D8DF00FA98D798DF20FA902A98DF40FA9958D8DF60FA97D028DF80FA9AD128DFA0FA942308DFC0FA9FBAD8DFE0FA912428D0010A910FB8D02104C8421A920498D0410A984C28D0610A930A58D0810A9F0A28D0A10A900008D0C10A9DF428D0E10A910008D1010A9B0088D1210A91A858D1410A9F0FC8D1610A94C108D1810A980048D1A10A9E8E88D1C10A980EE8D1E10A9E2308D2010A9A5248D2210A98D128D24104C8421A921A58D2610A9258D8D2810A912218D2A10A9A51C8D2C10A98D0E8D2E10A921A58D3010A91D8D8D3210A90E218D3410A9A51E8D3610A98D0F8D3810A921A58D3A10A91F8D8D3C10A90F218D3E10A980B88D4010A930008D4210A980008D4410A9F0008D46104C8421A950018D4810A900028D4A10A956108D4C10A95F108D4E10A987108D5010A96A108D5210A9FC108D5410A9A90E8D5610A9008D8D5810A940218D5A10A9E6248D5C10A960A98D5E10A920008D6010A98D408D6210A921C68D6410A91CC68D6610A91C608D68104C8421A9E2308D6A10A9A9808D6C10A98D428D6E10A921E68D7010A9F4A58D7210A9F4C98D7410A906D08D7610A90C648D7810A9F4E68D7A10A9F5A98D7C10A90F388D7E10A9E5F58D8010A98D008D8210A921C28D8410A930E68D8610A9F2A58D8810A9F2188D8A104C8421A9651E8D8C10A9851E8D8E10A9A0018D9010A900A28D9210A912008D9410A95A7A8D9610A9F0068D9810A9BFD48D9A10A910008D9C10A980048D9E10A9BFE88DA010A910008DA210A98FAF8DA410A910008DA610A98FBC8DA810A910008DAA10A9E2308DAC104C8421A9AD008DAE10A9005A8DB010A97AF08DB210A9041A8DB410A91A808DB610A9023A8DB810A93A8D8DBA10A900008DBC10A9C2308DBE10A9CACA8DC010A910D28DC210A988F08DC410A9CCE28DC610A930A98DC810A9148D8DCA10A943218DCC10A920498DCE104C8421A984C28DD010A930608DD210A91C028DD410A9DD028DD610A979028DD810A911038DDA10A9DC028DDC10A9AD038DDE10A9AC038DE010A9A9028DE210A910038DE410A914038DE610A9D9028DE810A915038DEA10A97D028DEC10A955028DEE10A9AC028DF0104C8421A9A4028DF210A9D8028DF410A904038DF610A9AD028DF810A9A8028DFA10A99CAE8DFC10A90DE28DFE10A930A58D0011A9F6D08D0211A919648D0411A9F0648D0611A9F1648D0811A9F2648D0A11A9F3A98D0C11A90C8D8D0E11A942218D1011A9A9278D12114C8421A98D008D1411A901A98D1611A9A18D8D1811A900428D1A11A9E6F68D1C11A920228D1E11A993648D2011A910A58D2211A910F08D2411A9FC208D2611A93B118D2811A980D58D2A11A9E2308D2C11A9A9188D2E11A98D008D3011A901A98D3211A9088D8D34114C8421A9C6138D3611A920728D3811A980C28D3A11A930E68D3C11A9F0A58D3E11A9F0C98D4011A9A0008D4211A990328D4411A9C9188D4611A901908D4811A930C98D4A11A940018D4C11A990288D4E11A9C9808D5011A901908D5211A929C98D5411A9A0018D56114C8421A9901E8D5811A9C9A78D5A11A901908D5C11A922C98D5E11A9C3018D6011A990208D6211A9C9208D6411A902908D6611A90FC98D6811A928028D6A11A990198D6C11A9C9468D6E11A902908D7011A917C98D7211A947028D7411A990B48D7611A9E2308D78114C8421A9604C8D7A11A98D118D7C11A94CEF8D7E11A9114C8D8011A937128D8211A94C6E8D8411A9124C8D8611A9A2128D8811A94CCC8D8A11A9124A8D8C11A9B0E88D8E11A90A388D9011A9E9A08D9211A9004A8D9411A9AA188D9611A969208D9811A9508D8D9A114C8421A916218D9C11A9E2308D9E11A9A9398DA011A9EBBF8DA211A9B3118DA411A900A08DA611A9808C8DA811A915218DAA11A9C2308DAC11A98D188DAE11A921808DB011A9C51F8DB211A901538DB411A9561D8DB611A91F538DB811A947488DBA11A9521F8DBC114C8421A956408DBE11A9521F8DC011A9404B8DC211A94B1F8DC411A952428DC611A951488DC811A94F538DCA11A944438DCC11A91F4E8DCE11A94D1F8DD011A91F1F8DD211A91F1F8DD411A953478DD611A940538DD811A91F4B8DDA11A940528DDC11A9531F8DDE114C8421A945518DE011A9404C8DE211A9441F8DE411A94E458DE611A91F488DE811A94D4F8DEA11A954538DEC11A91A4A8DEE11A9B0868DF011A90A388DF211A9E9408DF411A9014A8DF611A9AA188DF811A969A08DFA11A9508D8DFC11A916218DFE11A9E2308D00124C8421A9A9398D0212A9EBBF8D0412A916128D0612A900A08D0812A9808C8D0A12A915218D0C12A9C2308D0E12A98D188D1012A921E28D1212A930608D1412A91F0F8D1612A951408D1812A948528D1A12A9441F8D1C12A953478D1E12A9441F8D2012A9120D8D22124C8421A904128D2412A91F448D2612A9574F8D2812A9404D8D2A12A952488D2C12A94E4D8D2E12A91F4F8D3012A94E518D3212A9531A8D3412A901388D3612A9E9A08D3812A9010A8D3A12A9C9068D3C12A900F08D3E12A92A908D4012A9013A8D4212A918698D44124C8421A9EA508D4612A98D168D4812A921488D4A12A9E2308D4C12A9A0808D4E12A98C158D5012A921A98D5212A9288D8D5412A919218D5612A9C2308D5812A968188D5A12A969208D5C12A9008D8D5E12A916218D6012A9E2308D6212A9A9288D6412A98D198D66124C8421A921C28D6812A930E28D6A12A930608D6C12A94AB08D6E12A9FA0A8D7012A938E98D7212A9A7018D7412A94AAA8D7612A918698D7812A949518D7A12A98D168D7C12A921E28D7E12A930A98D8012A939EB8D8212A9BF948D8412A912008D8612A9A0808D88124C8421A98C158D8A12A921C28D8C12A9308D8D8E12A918218D9012A980D78D9212A9484D8D9412A91F678D9612A9641B8D9812A96A688D9A12A91D1F8D9C12A947548D9E12A9471E8DA012A94AB08DA212A9C60A8DA412A938E98DA612A920028DA812A94AAA8DAA124C8421A918698DAC12A9CE518DAE12A98D168DB012A921E28DB212A930A98DB412A939EB8DB612A9BFC88DB812A912008DBA12A9A0808DBC12A98C158DBE12A921C28DC012A9308D8DC212A918218DC412A980A38DC612A94E4E8DC812A94F528DCA12A938E98DCC124C8421A928028DCE12A9AA188DD012A969208DD212A9538D8DD412A916218DD612A9E2308DD812A9A9398DDA1
This is totally legit what are you talking about.
Btw, it's a single controller, so no crazy hidden multitap shenanigans.
0:11 - finished movie until critical glitch point
0:15 - found jump to controller registers
0:40 - stabilized controller registers (= total control at this point)
1:17 - wrote font graphics to VRAM
1:46 - wrote Merry Christmas!!! on the screen (close enough)
---
Result video: youtube.com/watch?v=ncnyPNKsL4k
Recording time: 6 hours and 20 minutes
Speed multiplier: 200
---
DKC2 = Donkey Kong Country 2
ACE = Arbitrary Code Execution
http://tasvideos.org/userfiles/info/27780694766873225
(well that took quite a bit... 6 hours and 20 minutes to be precise...)
...
(as long as twitch didn't delete the broadcast, here is the full stream http://www.twitch.tv/masterjun3/profile)
...
(...maybe I'll do a time-lapse...)
...
(I did... youtube.com/watch?v=k9IGrLLkJCo )
haha
aw yea, those pixels
by TASeditor & Masterjun & sockfolder
it's so good I mean look at all the glitches
and all the glitchiness and so on...
http://tasvideos.org/4638S.html
I think I'm happy with the result.
lsmv: http://tasvideos.org/userfiles/info/19873869950560708
To celebrate the support of 60 fps on Youtube, here is your 30 fps game TAS!
no sprites
OUR LORD AND SAVIOR.
http://www.twitch.tv/twitchplayspokemon
Music: "Mind Heist" by Zack Hemsey
Big thanks to Jademalo for his timelapse videos.
None of the pictures are mine. All credit goes to their respective owners.
Publication: http://tasvideos.org/2513M.html
Submission (Explanation): http://tasvideos.org/4156S.html
YOU CAN'T GET BACK TO THE GAME SO THE 99 LIVES CAN'T BE USED
2364 frames