Submission #7838: sobble_p's Flash A Koopa's Revenge in 09:26.80

(Link to video)
Adobe Flash
baseline
libTAS 1.4.4 + Ruffle nightly 2022-11-19
11336
20
2933
PowerOn
Submitted by sobble_p on 11/29/2022 9:29:52 AM
Submission Comments
sobble_p completes the Flash version of A Koopa's Revenge as fast as possible in 09:26.800s. "For years the Mario Bros. & company have been stepping on koopas and goombas. Now it's time for one koopa to get revenge. Play through 16 intense levels to achieve your goal of rescuing your goomba friends and getting revenge on Mario."

Emulator and SWF Information

  • Emulator used: Ruffle nightly-2022_11_19-linux-x86_64 (through libTAS v1.4.4)
  • Emulator operating system: Ubuntu 22.04 LTS (libTAS ran through the terminal.)
  • Emulator configuration: libTAS > General options > Frames per second > set to 20 / 1. Runtime > Time Tracking > enable only clock_gettime() monotonic. Use this URL Spoof in the command-line to bypass site-lock: --spoof-url https://lambta.co/shareswfs/sharekoopa1.swf
  • SWF MD5 hash: 6fc67e06690d66fd98f49b61642cb28b
  • SWF Source: Download link to the game provided by the lambta.co webiste.

Game Objectives

  • Complete all 16 levels and make it to the end screen as fast as possible.

Comments

A Koopa's Revenge is a Flash game released in 2006 by Lambta.co to Newgrounds. You play as a Koopa in a mario-like platforming game. The game uses basic controls such as holding CTRL to run (or to shoot fire), pressing SPACE to jump (or hold with the feather power-up to fall slower), using ARROW KEYS to move, and UP to go through a door. The Koopa has no momentum in his movement, as soon as you stop moving, Koopa completely stops. The game also runs at a solid 20 FPS, which means frame-perfect inputs are easier to perform for humans. Generally, this is a pretty simple game to TAS with a few glitches and exploits that save a little time. They are provided in more detail in the stage by stage comments below. Significant details will be elaborated on.

Stage by stage comments

Bowser's Castle, Level 1

  • First thing you will notice is a jump at the beginning. This is because every level starts with a jump input automatically. You will see in the same room I break through a breakable block a little weirdly to make it through a door. This is not a glitch and is intended to reach that location, the TAS just performs it very fast.

Bowser's Castle, Level 2

  • I damage boost through a thwomp to recollect a fire-flower so I don't have to wait for the thwomp. I jump in the door entrance leading to the last room with the three thwomps to jump over the wall and over them. This saves a little time as you don't have to wait for the fall at the beginning.

Bowser's Castle, Level 3

  • Wario boss fight. I get in four hits on the first run cycle he does. Each boss takes five hits to defeat (not including the re-fights. Those takes three). After his fireball cycle I get in the last hit as fast as possible.

Mushroom Forest, Level 1

  • We get the feather powerup in this level. We wanna keep this for a very long time. The feather power-up makes you jump higher and fall slower (the slow falling amount can be controlled by how long you hold SPACE).

Mushroom Forest, Level 2

  • At the end for one frame, I die but still keep my power-up and life. This is because you can't lose your power-ups or lives after touching the flagpole at the end of a level, so I do it for entertainment.

Mushroom Forest, Level 3

  • Peach boss fight. First hit cycle, I get two hits on peach real quick. This fight is easier with the feather but its easy to lose it so we hit peach in certain ways to avoid getting hit. Second hit cycle, I get the first hit as early as possible to get three hits in, defeating her boss fight within two cycles.

Sky Mountain, Level 1

  • Nothing particularly significant to mention here. Pretty standard level besides skipping the bit wit the walls and moving platforms with the feather to save a few seconds.

Sky Mountain, Level 2

  • Very short level. That's it.

Sky Mountain, Level 3

  • I enter the first door by holding UP in front of it, allowing me to enter it without waiting for the moving platform. This saves a few seconds. Waluigi boss fight. I wait for an ice platform it to hit him. I bounce off him five times to chain hits. This can only be done with the feather power-up. At the end, I do a glitch where I jump over an invisible wall by getting the last jump off of Waluigi and using the height of the jump from him with the jump of the feather to make it over it, going out of bounds. You can see the sky mountain background if you fly long enough. Pretty funny. You don't die since the level ends automatically a little after the last hit.

Dry Desert, Level 1

  • Nothing significant to mention here. Standard gameplay with things I've previously mentioned.

Dry Desert, Level 2

  • In the room with the blue coin bridge that must be activated with a switch, I use a frame-perfect jump with the Feather to bypass the coin bridge. This saves I'd guess about 10 seconds.

Dry Desert, Level 3

  • Luigi boss fight. Jump on him until he dies.

Mario's Castle, Level 1

  • Nothing significant to mention here besides waiting for lava or obstacles to move.

Mario's Castle, Level 2

  • Boss re-fights! Wario re-fight. I get all of my hits in the first cycle... even though his death animation plays in the first cycle, you still have to wait for his fireball attack. Damn. Peach re-fight. I get the two first hits on peach in the first cycle like last time. I finish her off in the second cycle. Waluigi re-fight. I bounce on his head until he dies... again. I go OOB again for the swag, the wall pushes you back in anyways. Luigi boss fight. Again, bounce on head 'til dead.

Mario's Castle, Level 3

  • Mario. The final boss. First phase. This is mostly waiting for his hand animations so that you can hit his hands. Each hand takes five hits. Second Phase. Hit robot Mario's monster stomach. I nearly was able to get a two-cycle second phase fight but couldn't get the last hit on him unfortunately.

Other comments

I enjoyed TASing this game over the (roughly) week I was working on it. I hope you all enjoy watching it too! I was also glad to get a sub-10 run. I feel kinda embarrassed that I may have missed a few seconds wait for Waluigi in his first fight. This is mentioned in the possible improvements below. Besides that, I think it's a solid TAS.

Possible Improvements

  • The only big oopsie I possibly made is at the Waluigi boss fight where you don't have to wait for the ice platform. I noticed you could reach the hitbox for Waluigi in the re-fight without the platform but I'm not sure if you can in the original fight. Unfortunately by the time I noticed, it was already too late. It saves a couple seconds.
  • Possibly getting a two-cycle second phase Mario boss fight.

Samsara: Claiming for judging. I've removed the "Current Patch" branch, as it isn't necessary with our game version system.
Samsara: Overall, the optimization looks good within the constraints of the game engine. The only thing that stood out to me was the final boss fight, which is slower than the RTA record by a number of seconds, primarily due to the RTA run only needing two cycles of hits on the second phase as opposed to the TAS's three. This seems odd, as the TAS noticeably gets more hits on the body, but the RTA run still finishes faster. I won't claim to understand how Flash and Ruffle work, but I'll make an educated guess as to why this is happening: Ruffle.
Out of curiosity, I also took a look at the fight in the old patch WR, which also uses the same strategy and functions identically to the other RTA record (albeit with significantly better RNG). Other runs on SRC in both categories are identical in terms of the total number of hits on the body: 8. Even the runs that need 3 cycles still add up to a total of 8 hits on the body. Weirdly, there are a total of 12 hits in the TAS (judging from the number of jump sounds), so something is amiss here. Ruffle is known to have differences in collision detection from base Flash, and in at least one case it makes RTA strategies in Flash impossible in Ruffle. Given that the main difference between the old and current patch seems to be the game's own collision detection being improved, this looks like the most likely case for the RTA WRs achieving a two cycle kill while the TAS can't. In that sense, I think this is acceptable. The """"worst case"""" scenario here is that this is proven wrong by an improvement, which is so far from actually being bad that it needs at least four sets of quotes around """"worst case"""" in order to accurately convey how """"bad"""" it is.
There's also the matter of the RNG. The old patch WR gets a perfect second phase, resulting in a fight nearly 50 seconds faster than the TAS. I asked sobble_p if it was possible to manipulate the RNG mid run in any way, and the response was a resounding and wonderfully explained "no", saying the only known way of changing the RNG is to change the system time prior to starting the run, meaning the entire game would need to be replayed over and over with different system time settings to check whether or not the RNG lines up for the final fight, clearly the place where it matters the most. To me, this is far too much to require of any TASer. While it could save a full minute on a long fight, there's no guarantee that any randomly chosen system time will even guarantee a better result to begin with, and there's no way of knowing that this is the only actual way of changing the RNG. Once again, an improvement could prove this wrong, and once again, there is absolutely nothing wrong with that.
With everything else in the run being as solid as it is, I see no reason to throw it to the wolves over the possible improvements. One may not even be possible on Ruffle, and the other looks unlikely to be realized without significantly more effort than we would ever require a TASer to go through. In my eyes, it's better to have this run than to not have it, so I think we're gonna have it. Accepting!

despoa: Processing...
Last Edited by despoa on 12/19/2022 3:23 PM
Page History Latest diff List referrers