This is a 3-frame TAS. And yet it took months to actually finish, with thousands of rerecords. Let me explain.
In this game, you have to quickly drag a hand towards a monkey to "spank the monkey" (for non-native speakers like me: this is a dirty joke). If you manage to spank it at more than 200mph, you get a nice music, showing that you succeeded. Besides the incredible music (excerpt of The Adventures Of Grandmaster Flash On The Wheels Of Steel), the main perk of the game back in the days is that you could very easily glitch it by dragging the cursor out of the screen or pausing the game, leading to incredible scores around 800-1000 mph. Some of these bugs are somewhat reproducible in Ruffle and can lead to scores within this range with some effort.
The game can be played for instance here and the .swf downloaded here.

Finding the maximum score

As a base of comparison, the maximum score you can get from going to the maximum right of the screen to the maximum left in one frame is a bit above 250 mph. But we have no reason to stop here, as we can enter mouse position values below those places.
Ruffle provides the ability to enter x;y mouse positions out of the screen window (labeled as a bug that I hope will never get fixed). We use this ability to enter arbitrarily high values. But if you think I just entered super high values and was then done with TASing this game, oh god you're wrong.
There are three meaningful frames in this TAS:
  • 384: positioning the mouse prior to grabbing the hand (preparation frame)
  • 385: grabbing the hand on the right position (pre-slap frame)
  • 386: moving the hand to the left position (adjustement frame) while remaining within the range accepted by the game
And hand is then released at frame 387 in an empty frame, ending the inputs.
After a first round of empirical search and a submission that got improved by current co-authors by fixing framerate and timing, I ended up using JPEXS to decompile the game and understand exactly what's going on. Basically, the game checks that the hand is in an acceptable range (between 10 and 350 pixels) at some point of the code, but only after some processing, which still allows us to enter extreme values beforehand, as long as we make sure some variable still ends within this range. With some computations, we can calculate the maximum value that gets the variable containing the hand x position as close to 10 as possible. (I kinda forgot all the details as I'm writing this after weeks of procrastination, but you can directly check the core logic handling this, as it's pretty short.)
Current mouse values are optimal because increasing them from even 1 makes some internal variable overflow.
Then we can get some additional extra score by abusing framerate, as one line in the code divides the result by some speed factor (see details here).

Results

The results are the following:
  • frame 384: -53686737 (preparation frame)
  • frame 385: 53686737 (pre-slap frame)
  • frame 386: -36085227 (adjustement frame)
Score: 214.748.340 miles per hour.
As a reminder, speed of light is 671.000.000 mph. Our score is 500 times faster than the fastest man-made object, the Parker Solar Probe (see this video to get an idea of what this speed actually represents). We therefore successfully managed to make our monkey the fastest man-made object, at 32% the speed of light.
Considering the size of my screen, that means putting the mouse roughly 15 kilometers (9 miles) left and right of the screen in one frame, which I challenge you to do in real time. Considering one frame is 1/100th of a second, that means moving the cursor at 3000 km/s, which is 15.7 times faster than the parker solar probe.

Category

Besides "High score", this movie could be published under the "mouse glitch" category made up for this movie, although there really isn't much more to the game. A normal run would be just as fast and within the 250-300 mph range, which is pretty boring.

Room for improvement

While the speed factor can theoretically allow us to get a maximal factor of 10 on the final score, I only managed to make a factor 2 work. perhaps the game just doesn't compute fast enough for more to work. I don't know, I just haven't managed to make something work while starting with a framerate of 1000. Making this work could finally make us exceed speed of light.
Also, while the x variable overflow, it's still a factor 10 off the maximum position for an object in Flash. It's *possible* that working with the game resolution might produce some better results.

Submission / encoding note

As I'm modifying the default framerate of the movie so I can get the internal timer to run at a different rate (while actually changing framerate of single frame only), this make libTAS laggy for frames that are not running at a framerate of 100 (since they're non-draw frames). For encoding convenience, I leave the .ltm file with frames up to the end of the song so they're set at 100 fps, but the movie does end at frame 386.

Versions

  • libTAS v1.4.7
  • ruffle-nightly-2025-09-22
  • monkey.swf md5sum: 23e550300d5ba036a994534eca0a8525

eien86: Claiming for judging.

eien86: Spank the Monkey (named "Slap the Monkey" in the .swf file, probably an earlier naming) is a game with the only objective of slapping an inflatable monkey as fast as possible using a quick sideways movement of the mouse. The game is only beaten if you get to exceed 200mph, which this movie does, and then some. The movie achieves the goal arguably in the least number of frames possible, but also with the highest speed (i.e., score) reaching something like 3% of the speed of light in doing so, exploiting a mouse glitch.
The "maximum score" and "fastest solution" goals here are intertwined and cannot be easily divorced. I'd argue maximizing the speed of the mouse is also an expectation of a standard movie and therefore clarifying "maximum score" as a goal is not necessary. Nor it is the fact that a mouse glitch, since this is an expectation of an any% approach, where everything goes. Therefore, I will remove all specification of goals and leave this as baseline. Any obsoleting movie should either (a) be faster, or (b) score more speed.
Accepting to Standard

eien86: Oops, jumped the gun there -- seems like the authors are working on an improvement still: https://tasvideos.org/Forum/Posts/540682

Samsara: Resetting to New.

nymx: Claiming for judging.
nymx: This submission blew me away. At first, I laugh so hard after I saw this video. It took me by surprise. Then, I noticed the frame war battle. Who would ever have thought that such a short movie would have been so complicated to optimize. It just goes without saying, all TASes cannot be viewed at a surface level...you have to think outside of what's visible.
Even though entertainment is not a consideration for acceptance, I have to say that this was quite funny. I think the 14 yes votes are in agreement with me. In fact, watched it multiple times to just be amused over and over.
Accepting to "Standard". :)

despoa: Processing...

nymx: Replacing with a "zero" re-record input file.


TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 17377
Location: 127.0.0.1
Player (23)
🇺🇸 United States
Joined: 5/5/2025
Posts: 200
Location: 🇺🇸 United States
That was fast, yes vote!
SMB2U is the best NES Mario game.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4142
Speedy TAS candidate I suppose ;>
Puzzle gamedev https://patashu.itch.io Famitracker musician https://soundcloud.com/patashu Programmer, DDR grinder, enjoys the occasional puzzle game/shmup.
AquaBat
He/Him
Joined: 12/10/2024
Posts: 11
Forget spanking, that’s fast enough to liquify that simian. Perhaps we should try to shock the monkey next time. Seems like including the categorization “mouse glitch” is an adequate way to deal with what amounts to an emulator glitch.
Dimon12321
He/Him
Editor, Reviewer, Experienced player (706)
🇷🇴 Romania
Joined: 4/5/2014
Posts: 1446
Location: 🇷🇴 Romania
It's a trash game, but I giggled xD Yes vote
TASing is like making a film: only the best takes are shown in the final movie.
Emulator Coder, Site Admin, Skilled player (1277)
Joined: 4/17/2010
Posts: 11877
you could very easily glitch it by dragging the cursor out of the screen
If I try it in FlashPlayer the hand bounces back when I try to move it out of bounds.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
feos wrote:
you could very easily glitch it by dragging the cursor out of the screen
If I try it in FlashPlayer the hand bounces back when I try to move it out of bounds.
I don't know much about the specifics of FlashPlayer, but I think there may be differences between the version integrated in webpages and the standalone version. At least, there's one for Ruffle. What I'm talking about is when the game was playable on web pages. It's also possible I remember it wrong.
Spikestuff
They/Them
Editor, Expert player (3472)
Location: The land down under.
Joined: 10/12/2011
Posts: 6645
Location: The land down under.
Typically speaking if you can get this to work with something like AHK replicating the steps with the Flash Player then maybe that'll be something? I tried making something, but me making something is the equivalent of watching something explode, and it doesn't seem that the mouse is bounded when slapping at a high rate. Then I remembered that Right Click exists, and you can pretty much go for broke with very high numbers.
AquaBat wrote:
Seems like including the categorization “mouse glitch” is an adequate way to deal with what amounts to an emulator glitch.
This is a non-issue. More importantly, the second one is the precursor to this one in this instance. [5496] Flash Full Moon "mouse glitch" by Spikestuff in 00:01.42 [5579] Flash Hedgehog Launch "mouse glitch" by Spikestuff in 00:09.72 Being able to use the Flash Player to jump from one extreme to the other is extremely possible, and it would be possible in Ruffle as well.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Strong for yourself and also others.
Emulator Coder, Site Admin, Skilled player (1277)
Joined: 4/17/2010
Posts: 11877
zapkt wrote:
feos wrote:
you could very easily glitch it by dragging the cursor out of the screen
If I try it in FlashPlayer the hand bounces back when I try to move it out of bounds.
I don't know much about the specifics of FlashPlayer, but I think there may be differences between the version integrated in webpages and the standalone version. At least, there's one for Ruffle. What I'm talking about is when the game was playable on web pages. It's also possible I remember it wrong.
Weird, standalone ruffle behaves the same, but for the embedded one it varies: https://www.albinoblacksheep.com/games/spankthemonkey same (version 2021-04-04) https://www.addictinggames.com/funny/spank-the-monkey lets you drag it OOB (version 2024-01-11) Looks like they failed to emulate the correct behavior at first and then added it. I'll check in 2021 standalone.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
feos wrote:
zapkt wrote:
feos wrote:
you could very easily glitch it by dragging the cursor out of the screen
If I try it in FlashPlayer the hand bounces back when I try to move it out of bounds.
I don't know much about the specifics of FlashPlayer, but I think there may be differences between the version integrated in webpages and the standalone version. At least, there's one for Ruffle. What I'm talking about is when the game was playable on web pages. It's also possible I remember it wrong.
Weird, standalone ruffle behaves the same, but for the embedded one it varies: https://www.albinoblacksheep.com/games/spankthemonkey same (version 2021-04-04) https://www.addictinggames.com/funny/spank-the-monkey lets you drag it OOB (version 2024-01-11) Looks like they failed to emulate the correct behavior at first and then added it. I'll check in 2021 standalone.
Oh I didn't know website could embed a specific version of Ruffle. The behaviour is not what was happening back in the days, though. You could drag the hand to a side of the screen, at which point the hand would get "stuck" to this position, go around the embedded player with the mouse and re-enter the player at the other side of it, which would immediately move the hand there. That's what I remember, at least.
Emulator Coder, Site Admin, Skilled player (1277)
Joined: 4/17/2010
Posts: 11877
https://github.com/ruffle-rs/ruffle/releases/tag/nightly-2021-04-04 allows you to drag it offscreen, and then later versions replicated FP behavior. However this movie was made on a 2025 ruffle, so maybe if instead of moving the hand gradually we just send direct numbers (like libTAS does) it doesn't do some checks.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Experienced player (583)
Joined: 2/11/2018
Posts: 279
zapkt wrote:
Oh I didn't know website could embed a specific version of Ruffle. The behaviour is not what was happening back in the days, though. You could drag the hand to a side of the screen, at which point the hand would get "stuck" to this position, go around the embedded player with the mouse and re-enter the player at the other side of it, which would immediately move the hand there. That's what I remember, at least.
Tested on the original site in a Flash browser, that is indeed what happens (Flash Player 32, Chromium). Link to video https://web.archive.org/web/20030901104514if_/http://www.h69.net/spank/ Also, there's a secret/debug key left in the game. If you hold H while dragging you will always get 690mph.
Emulator Coder, Site Admin, Skilled player (1277)
Joined: 4/17/2010
Posts: 11877
The hand is not going OOB in your video. Also what is Flash browser?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Experienced player (583)
Joined: 2/11/2018
Posts: 279
I used Chromium 86
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
Hey, can this movie be judged? :3 It's way up the submission list now. I think Flash TASes take longer to get chosen than common platforms?
Spikestuff
They/Them
Editor, Expert player (3472)
Location: The land down under.
Joined: 10/12/2011
Posts: 6645
Location: The land down under.
Just noticed that the framerate is wrong. Game runs at 100fps. This is done at 30fps. Also because of it being done on the right framerate gives you a higher score (72,169,752 just above 3 times larger). Here's the userfile to it. Requesting co-auth.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Strong for yourself and also others.
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
Oh great!!! We're now at 10.8% the speed of light!!! I don't know how I missed that, the framerate in the exif data is indeed 100 fps. I need to study is this means we can get even higher
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
I can indeed still improve it thanks to the new frames introduced by fixing the framerate: It's more complex as there are 5 frames and I can't evaluate the underlying logic (384 - 385 - 386 are not aligned and can't be)... I'm still blindly guessing how to vary their values
Former player
Joined: 4/17/2009
Posts: 90
If the mouse position is being edited to beyond what is possible, wouldn't this be on-par with memory editing?
Editor, Player (161)
Joined: 7/10/2022
Posts: 40
Pikachu wrote:
If the mouse position is being edited to beyond what is possible, wouldn't this be on-par with memory editing?
It's not memory editing, we're sending valid input to the game. Such input is theoretically possible using mouse settings to a very high dpi and a very large screen (or somehow not limiting mouse position to the side of the screen). Also, how do you define what is possible? What is the limit?
Post subject: Review: replication
Reviewer, Player (120)
Joined: 5/24/2023
Posts: 9
I am able to replicate all scores to their provided .ltm files via playback on my machine.
eien86
He/Him
Expert player (5153)
🇨🇭 Switzerland
Joined: 3/21/2021
Posts: 431
Location: 🇨🇭 Switzerland
zapkt wrote:
I can indeed still improve it thanks to the new frames introduced by fixing the framerate: It's more complex as there are 5 frames and I can't evaluate the underlying logic (384 - 385 - 386 are not aligned and can't be)... I'm still blindly guessing how to vary their values
Hi Zapkt, I missed this and previous posts about improvements, oops. Seems like you're still working on it though -- I'll put this submission on delayed until you upload an improvement or tell me this movie is the one to judge. Thanks
synabler
He/Him
Player (173)
🇰🇷 South Korea
Joined: 7/11/2016
Posts: 24
Location: 🇰🇷 South Korea
The game can be beaten 2 frames faster, so the submission is not the fastest completion but only the maximum score. User movie #639053017370897634
Spikestuff
They/Them
Editor, Expert player (3472)
Location: The land down under.
Joined: 10/12/2011
Posts: 6645
Location: The land down under.
In fairness to zapkt that may have been an error I introduced due to the game having issues with the positions I used when correcting to be at the game's framerate.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Strong for yourself and also others.
synabler
He/Him
Player (173)
🇰🇷 South Korea
Joined: 7/11/2016
Posts: 24
Location: 🇰🇷 South Korea
It turns out maximum score can also be achieved in 386 frames, improving the score to 107374170 mph: User movie #639053787072029922 The x coordinates are -53686737, 53686737, and -36085227. Once you increase either the first or second frame's input past this point, some kind of overflow seems to happen...? I modified the SWF to display the hand's position and it broke when I set the second frame to 53686738. Anyway, I would like to request co-authorship as well.